2010-05-08 144 views
2

我有一个.NET Windows服务似乎由于C00000005(访问冲突 - 根据Watson博士)而崩溃。当我将VS调试器附加到VS调试器上时(无论是否使用符号构建它),VS调试器只会在服务崩溃时停止,而不是停下来让我有机会做任何调查。如何调试崩溃的Windows服务?

  1. 这是预料之中,还是我做错了什么?
  2. 将使用WinDbg让我做更多的实时(显然,WinDbg让我做崩溃转储分析)?

谢谢!

回答

0

您应该进入异常窗口(调试 - >异常)并在Win32异常中为该异常选择Thrown复选框。此外,请注意您正在调试本机代码(请参阅附加到处理窗口附加组合框中)

+0

@Christopher:我的回答对您有帮助吗? – Ikaso 2010-05-10 08:49:38

+0

对不起,问题原来是一个COM DLL在加入它所产生的所有线程之前,它自己卸载了它,当其中一个睡眠线程醒来时,它试图执行不在内存中的代码,最终导致递归异常处理程序调用溢出堆栈。 底线:除非你知道你在做什么,否则不要在COM DLL中使用OmniORB。 – Chris 2010-06-25 17:31:05