刚才我接受了ca(Computer Associates)的C++开放采访.
问:有一个应用程序连续运行了几天......有一天它变得无响应/被绞死.你怎么调试/纠正应用程序.你的第一步是什么?
答:我首先回答...检查内存使用情况详细信息/ CPU使用情况.如果某些所需资源可用,则检查...或者如果它是网络绑定的,如果网络是实时的..等等.
问:他告诉......这些都是肤浅的东西......假设没有这样的问题......那么?
答:我告诉最好的方法是检查调试日志是否已启用..如果它们不是..给客户一个启用调试的应用程序并在现场测试它.因为应用程序是间歇性挂起的......很难通过任何其他方式检测为什么它会没有响应.调试日志会告诉我应用程序什么时候开始生气,因为找到根本原因的具体操作负责需要知道,调试日志是我认为最好的选择.
面试官转向另一个问题说..好吧.
那么,我的回答是否足够好.还有一个优秀的程序员会遵循的其他方法吗?
使用WinDbg或创建(迷你)转储文件并在Visual Studio中加载它.为所有发布二进制文件加载调试符号,并查看它的确切挂起位置
这应该是一个体面的第一步
编辑当然,我(愚蠢地)假装窗户没有明显的原因.在Unix/Linux,这将是使用更容易strace,ptrace,gdb --remote,pstack,dtrace(如果它的存在)等
编辑同样使用WMI性能计数器/ perfmon是一个非常好的做法.这或许会提供一些线索(但我敢肯定,面试官在寻找答案的"如何检查正在运行的应用程序的类型,这是稍微偏向你已经提到过的"依赖于日志"的方式你自己的回答)
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |