1

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

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

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

4

3 回答 3

5

您需要在调试器中运行,然后在出现减速时中断执行。它停止的地方很可能就是你的问题所在。如果您多次启动和停止,则执行中断最频繁的地方可能会确定。

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

于 2012-06-07T17:06:22.377 回答
0

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

于 2012-06-07T17:13:14.070 回答
0

A. 附源代码

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

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

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

于 2012-06-07T17:26:12.330 回答