我们的一个遗留产品是Winforms应用程序,它不是使用后台线程,而是在主UI线程上执行所有操作。它在这个主线程上运行一个常量循环,每20 ms调用一次Application.DoEvents()。偶尔,应用程序会在DoEvents调用时挂起。我的问题是如何找出代码挂起的排队事件调用?
P.S。有人知道我可以用来获取进程中每个线程的堆栈跟踪的工具吗?
此外,这只发生在一个生产客户端,我们现在得到解决方案。也不可能在客户端安装VS.
答案 0 :(得分:2)
您可以在visual studio中执行此操作,只需附加到进程,中断执行并打开线程窗口。
菜单:调试 - > Windows->主题
答案 1 :(得分:0)
我找到了我正在寻找的工具。 WinDbg
它可以获取当前正在运行的Windows进程的堆栈跟踪。但是它确实需要该应用程序的PDB文件。