.NET应用程序挂起,我无法调试它

时间:2010-11-29 12:59:23

标签: .net visual-studio debugging

我正在为Syslog开发多线程C#服务器。我正在尝试执行一个长期运行的实验,但我发现服务器挂起一小时后(在一段时间后,日志记录停止)。

我尝试在Visual Studio中以Debug模式运行它,当我发现它挂起并试图按Pause以获取有关线程位置的有用信息时,Visual Studio说远程调试监视器崩溃了。这是一个本地应用程序。

如何暂停流程并获取有关线程状态的有用信息?

3 个答案:

答案 0 :(得分:3)

Managed stack explorer将轮询托管应用程序并记录当前正在发生的事情。

This article也可能有用(关于挂起模式转储的部分),但需要调试崩溃转储文件(WinDbg不像Visual Studio那样容易吸收,需要一些时间来学习)。

答案 1 :(得分:1)

我会尝试StingyJack的推荐,但我相信使用Debug.WriteLine()并使用Sysinternal的DebugView来查看正在发生的事情,没有替代轻量级跟踪。

这将是 I 开始的地方。 VS的功能不足以帮助您调试多线程服务。有时甚至会出现在对象的状态上,请记住,当您调试时,您扰乱正常的事件流

答案 2 :(得分:0)

对于VS无法捕获的低级别问题,

WinDBG 是一个不错的选择。您可以在此处找到更多信息:Debugging Tools for Windows