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

3

什么是崩溃转储(crash-dump)和挂起转储(hang-dump)之间的区别?

假设我编写一个实用程序,在单击时创建进程的转储,如何通知实用程序创建适当的转储?


+1. 我也在努力理解这个问题。我感到困惑的是为什么WinDBG中有不同的选项,而在任务管理器中却只有一个常见的选项来创建转储文件。 - w0051977
2个回答

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

0

转储只是进程的快照。

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

挂起情况(或100% CPU占用)是特定于应用程序的,因此更难以监控。 如果应用程序无响应或CPU密集型,可能是因为它正在进行某些计算? 也许它等待某些网络数据? 也许应用程序GUI是响应的,但两个后台工作线程死锁了?

通常,我建议手动生成挂起转储。当最终用户/QA工程师确定出现问题时。 自动化挂起转储可以完成,但是生成这些转储的决策是特定于应用程序而定的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接