当我的应用程序在我的开发PC上进入长循环或无限循环时,我在VS调试器中打破它,告诉我它正在做什么。我也希望在用户PC上以简单的方式做到这一点,以帮助调试。
我在想这样的事情:
break.exe
,当运行时,连接到另一个进程并将一些内容写入管道。然后,如果用户报告应用程序冻结,我可以告诉他们尝试运行break.exe。
这是一个好方法吗?
答案 0 :(得分:1)
你有几个选择。
任务管理器允许您创建任何正在运行的进程的转储。可以在您的开发机器上检查转储。您可以通过将转储加载到调试器中来检查所有线程的堆栈(我建议使用WinDbg / SOS)。此选项不需要在用户计算机上进行任何其他安装。
Process Explorer允许您检查正在运行的进程的线程。如果你有一个重复循环,你可以通过查看堆栈来检测它。
WinDbg(SOS是框架的一部分)可以将xcopy部署到用户计算机。您可以附加到流程并检查或转储流程内存。
答案 1 :(得分:0)
您可以使用Debug.WriteLine
输出调试信息。调试输出的文本可以用例如Sysinternals'DbgView。
或者,您可以为用户进行特殊的调试构建,这会将所有必要的信息转储到用户的%APPDATA%文件中。