崩溃转储和挂起转储之间的区别?

时间:2012-04-19 08:09:21

标签: debugging windbg sos

崩溃转储和挂起转储有什么区别?

假如我编写一个实用程序来点击它来创建进程的转储,我将如何使用该实用程序来创建适当的转储?

2 个答案:

答案 0 :(得分:1)

不确定您的意思,它们都是不同详细程度的应用程序/内核状态(内存)的转储。无论应用程序是挂起还是崩溃都与构成转储的内容无关,请参阅此doc和此处http://www.debuginfo.com/articles/easywindbg2.html#savedumps崩溃转储将具有崩溃本身的异常记录。

MiniDumpWriteDump: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680360%28v=vs.85%29.aspx

不同类型的转储: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680519%28v=vs.85%29.aspx

答案 1 :(得分:0)

转储只是流程的快照。

崩溃情况更容易监控。 应用程序引发了一些未处理的异常,监视过程会对故障过程进行快照。 如果您没有设置任何监控,Windows操作系统最终会为您生成一个小型转储。

挂起情况(或100%CPU占用)是特定于应用程序的,因此监控起来比较棘手。 如果应用程序没有响应或CPU密集,可能是因为它正在忙着做一些数字运算? 也许它适用于某些网络数据? 也许应用程序GUI是响应式的,但是两个后台工作程序线程陷入僵局?

通常,我建议手动生成挂起转储。当最终用户/ QA工程师确定出现问题时。 可以自动执行挂起转储,但是生成它们的决定何时是特定于应用程序的。