当我的应用程序在我的开发 PC 上进入长循环或无限循环时,我会在 VS 调试器中将其中断,它会告诉我它在做什么。我也想在用户 PC 上以简单的方式执行此操作,以帮助调试。
我在想这样的事情:
- 在应用程序中,运行一个单独的线程,该线程在某种进程间管道上等待,并在收到来自它的任何内容后,记录主线程的当前堆栈跟踪。(使用 Thread.GetCompressedStack() ?)
- 发送一个帮助 exe,例如
break.exe
,当它运行时,连接到另一个进程并向管道写入一些东西。
然后,如果用户报告应用程序冻结,我可以告诉他们尝试运行 break.exe。
这是一个好方法吗?