我有一个windows服务,它间歇性地抛出一个有时会导致SQLConnection失败的异常,而其他时间则会完全中止服务。它在客户的网站上运行。带SOS的Windbg,停在正确的异常处
我已经计划使用Windbg + SOS来获取崩溃转储,以便我可以在自己的闲暇时间进行调试。
但是,在我第一次尝试时,调试器在服务遇到第一次机会异常时被暂停,该异常在代码中被捕获和处理(如我使用sxe clr
命令)。
帮助文件似乎暗示我使用sxd clr
而不是sxe clr
来捕获第二个更改异常,而不是第一次机会异常。
然而,在我的测试中,sxd clr
命令正在处理生成的捕获和处理的异常,与引发的异常(但未捕获)完全相同,即将其记录并忽略。
这种行为,不停止抛出的异常,可能是因为我在我的代码中显式抛出了异常,或者是否所有的clr异常都无法使用sxd
命令暂停调试器?我应该使用不同的命令吗?
其次,由于WinDBG的不特异性识别CLR的错误,是可以告诉它只是在一个特定的,未处理的,异常停止(即出现InvalidOperationException)
谢谢,我会检查出来 – johnc 2010-09-14 03:49:08
请记住,在最新版本的WinDbg中,adplus.vbs被替换为adplus.exe。我在新版本中遇到了一些问题,因此您可能需要使用旧版本,该版本仍包含在内(重命名为adplus_old.vbs)。 – 2010-09-14 03:53:43
很好,谢谢 – johnc 2010-09-14 04:36:42