我的程序在执行某项功能时变得无响应。我如何能够实时了解它正在做什么才能知道为什么它变得无法响应?
它没有崩溃,所以我不幸地看不出原因。我怎样才能知道它在做什么?
我该怎么办?对于有和没有实际源代码的情况,哪种程序在这种情况下都很好?
答案 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)观看网络活动或进程监视器,以查看注册表或文件访问。