崩溃转储和挂起转储有什么区别?
假设如果我编写一个实用程序来在单击它时创建进程的转储,我将如何提示该实用程序来创建适当的转储?
不确定您的意思,它们都是应用程序/内核状态(内存)的不同细节级别的转储。应用程序是否挂起或崩溃与转储的构成无关,请参阅此文档和此处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 工程师确定有问题时。可以自动执行挂起转储,但何时生成它们的决定是特定于应用程序的。