如何确定程序在无响应时正在执行的操作

How to determine what program is doing when it becomes non responsive?

本文关键字:执行 操作 响应 何确定 程序      更新时间:2023-10-16

我的程序在执行某个函数时变得无响应。我怎样才能实时看到它在做什么,以了解它为什么变得无响应?

它没有崩溃,所以不幸的是我看不到原因。我怎样才能知道它在做什么?

我能做什么?在这种情况下,有哪些程序对于有和没有实际源代码都很好?

您需要在调试器中运行,然后在速度变慢时中断执行。 它停止的地方很可能是你的问题所在。 如果您多次启动和停止,则最常中断的位置执行可能会肯定地说。

或者使用探查器。 任何一个程序都可以在没有源代码的情况下工作,尽管将它们与源代码和调试符号一起使用要容易得多(不需要在您运行的平台上具有相当多的汇编知识技能)。

看看 Process Monitor from Sysinternals http://technet.microsoft.com/en-us/sysinternals/bb896645

A. 与源代码

您可以将 Visual Studio 附加到进程并按中断。之后查看调用堆栈。如果 ti 没有崩溃,则可能没有递归。所以你应该看看它在做什么。

如果是多线程应用程序,则在线程之间切换并监视调用堆栈。

B. 没有源代码我认为这很难。唯一能找到的是外部分析。像wireshark来监视网络活动或从Sysinternals(procmon.exe)的进程监视器来查看注册表或文件访问。