【发布时间】:2012-10-25 17:37:32
【问题描述】:
crash-dump 和 hang-dump 有什么区别?
假设如果我编写一个实用程序来创建单击进程的转储,我将如何提示该实用程序来创建适当的转储?
【问题讨论】:
-
+1。我也在努力理解这一点。我很困惑为什么它们在 WinDBG 中是单独的选项,但在任务管理器中有一个常见的选项可以创建转储文件。
crash-dump 和 hang-dump 有什么区别?
假设如果我编写一个实用程序来创建单击进程的转储,我将如何提示该实用程序来创建适当的转储?
【问题讨论】:
不确定您的意思,它们都是应用程序/内核状态(内存)的不同细节级别的转储。应用程序是否挂起或崩溃与什么构成转储无关,请参阅此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
【讨论】:
转储只是过程的快照。
崩溃情况更易于监控。 应用程序引发了一些未处理的异常,并且监控进程拍摄了故障进程的快照。 如果您不设置任何监控,Windows 操作系统最终会为您生成一个小型转储。
挂起情况(或 100% CPU 占用)是特定于应用程序的,因此更难以监控。 如果应用程序没有响应或 CPU 密集型,可能是因为它正忙于处理一些数字? 也许它适用于一些网络数据? 也许应用程序 GUI 是响应式的,但两个后台工作线程陷入僵局?
一般来说,我建议手动生成挂起转储。当最终用户/QA 工程师确定有问题时。 可以自动执行挂起转储,但何时生成它们的决定取决于应用程序。
【讨论】: