我的程序在执行某个功能时变得无响应。我怎样才能实时看到它在做什么,以了解它为什么变得无响应?
它没有崩溃,所以很遗憾我看不到原因。我怎样才能知道它在做什么?
我能做些什么?对于有和没有实际源代码的情况,有哪些程序在这种情况下是好的?
我的程序在执行某个功能时变得无响应。我怎样才能实时看到它在做什么,以了解它为什么变得无响应?
它没有崩溃,所以很遗憾我看不到原因。我怎样才能知道它在做什么?
我能做些什么?对于有和没有实际源代码的情况,有哪些程序在这种情况下是好的?
您需要在调试器中运行,然后在出现减速时中断执行。它停止的地方很可能就是你的问题所在。如果您多次启动和停止,则执行中断最频繁的地方可能会确定。
或者使用分析器。任何一个程序都可以在没有源代码的情况下工作,尽管使用源代码和调试符号更容易使用它们(在您运行的平台上不需要相当多的汇编知识技能。)
A. 附源代码
您可以将 Visual Studio 附加到进程并按下中断。然后查看调用堆栈。如果 ti 没有崩溃,则它可能没有递归。所以你应该看看它在做什么。
如果是多线程应用程序,则在线程之间切换并观察调用堆栈。
B. 如果没有源代码 ,我认为这很难。唯一能找到的就是外部分析。像使用wireshark 来观察网络活动或来自Sysinternals (procmon.exe) 的进程监视器来查看注册表或文件访问。