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

时间:2012-06-07 17:03:22

标签: c++ debugging visual-c++

我的程序在执行某项功能时变得无响应。我如何能够实时了解它正在做什么才能知道为什么它变得无法响应?

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

我该怎么办?对于有和没有实际源代码的情况,哪种程序在这种情况下都很好?

3 个答案:

答案 0 :(得分:5)

您需要在调试器中运行,然后在发生减速时中断执行。它停止的地方很可能是你的问题所在。如果你多次开始和停止,地点执行中断最常见的可能是肯定的。

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

答案 1 :(得分:0)

从Sysinternals http://technet.microsoft.com/en-us/sysinternals/bb896645

查看Process Monitor

答案 2 :(得分:0)

:一种。使用源代码

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

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

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