我们的遗留产品之一是 Winforms 应用程序,它不使用后台线程,而是在主 UI 线程上执行所有操作。它在这个主线程上运行一个恒定循环,每 20 毫秒调用一次 Application.DoEvents()。有时,应用程序会在 DoEvents 调用中挂起。我的问题是如何找出代码挂起的队列事件调用?
PS有人知道我可以用来获取进程中每个线程的堆栈跟踪的工具吗?
此外,这仅发生在生产客户端,我们现在必须解决。也不可能在客户端安装 VS。
您可以在 Visual Studio 中执行此操作,只需附加到进程、中断执行并打开线程窗口。
菜单:调试->Windows->线程
我找到了我正在寻找的工具。数据库
它可以获取当前正在运行的 Windows 进程的堆栈跟踪。但是,它确实需要该应用程序的 PDB 文件。