您将如何纠正无响应的应用程序?

ash*_*ony 1 c++

刚才我接受了ca(Computer Associates)的C++开放采访.

问:有一个应用程序连续运行了几天......有一天它变得无响应/被绞死.你怎么调试/纠正应用程序.你的第一步是什么?

答:我首先回答...检查内存使用情况详细信息/ CPU使用情况.如果某些所需资源可用,则检查...或者如果它是网络绑定的,如果网络是实时的..等等.

问:他告诉......这些都是肤浅的东西......假设没有这样的问题......那么?

答:我告诉最好的方法是检查调试日志是否已启用..如果它们不是..给客户一个启用调试的应用程序并在现场测试它.因为应用程序是间歇性挂起的......很难通过任何其他方式检测为什么它会没有响应.调试日志会告诉我应用程序什么时候开始生气,因为找到根本原因的具体操作负责需要知道,调试日志是我认为最好的选择.

面试官转向另一个问题说..好吧.

那么,我的回答是否足够好.还有一个优秀的程序员会遵循的其他方法吗?

seh*_*ehe 6

使用WinDbg或创建(迷你)转储文件并在Visual Studio中加载它.为所有发布二进制文件加载调试符号,并查看它的确切挂起位置

这应该是一个体面的第一步

编辑当然,我(愚蠢地)假装窗户没有明显的原因.在Unix/Linux,这将是使用更容易strace,ptrace,gdb --remote,pstack,dtrace(如果它的存在)等

编辑同样使用WMI性能计数器/ perfmon是一个非常好的做法.这或许会提供一些线索(但我敢肯定,面试官在寻找答案的"如何检查正在运行的应用程序的类型,这是稍微偏向你已经提到过的"依赖于日志"的方式你自己的回答)