我正在为Syslog开发多线程C#服务器。我正在尝试执行一个长期运行的实验,但我发现服务器挂起一小时后(在一段时间后,日志记录停止)。
我尝试在Visual Studio中以Debug
模式运行它,当我发现它挂起并试图按Pause以获取有关线程位置的有用信息时,Visual Studio说远程调试监视器崩溃了。这是一个本地应用程序。
如何暂停流程并获取有关线程状态的有用信息?
答案 0 :(得分:3)
Managed stack explorer将轮询托管应用程序并记录当前正在发生的事情。
This article也可能有用(关于挂起模式转储的部分),但需要调试崩溃转储文件(WinDbg不像Visual Studio那样容易吸收,需要一些时间来学习)。
答案 1 :(得分:1)
我会尝试StingyJack的推荐,但我相信使用Debug.WriteLine()并使用Sysinternal的DebugView来查看正在发生的事情,没有替代轻量级跟踪。
这将是 I 开始的地方。 VS的功能不足以帮助您调试多线程服务。有时甚至会出现在对象的状态上,请记住,当您调试时,您扰乱正常的事件流。
答案 2 :(得分:0)
WinDBG 是一个不错的选择。您可以在此处找到更多信息:Debugging Tools for Windows