崩溃时如何为我的进程创建minidump?

我无法通过更改系统设置来在过程中创建小型转储。所以我的问题是:

  • 系统崩溃时,系统会为用户进程创建一个小型转储吗

    如果是,我需要配置哪个设置

  • 还是我必须以编程方式创建小型转储。

  • 小型转储在调查崩溃时有多有效

我正在使用Windows XP,C ++,VC6


蓝山帝景
浏览 542回答 3
3回答

一只甜甜圈

您需要以编程方式创建一个小型转储(一个例外,请参阅下一个链接)。CodeProject 在MiniDumps上有一篇不错的文章。基本上,您想使用dbghelp.dll,并使用该功能MiniDumpWriteDump()(请参见MiniDumpWriteDump上的MSDN)。这种转储的有效性在很大程度上取决于应用程序。有时,对于优化的二进制文件,它们实际上是无用的。另外,如果没有经验,堆/堆栈损坏错误将使您误入歧途。但是,如果优化程序对您的要求不是很高,则转储确实会帮助您解决大量错误,即所有具有堆栈跟踪+本地使用变量值的错误都是有用的,即许多纯虚拟的错误函数调用事物(即错误的销毁顺序),访问冲突(未初始化的访问或缺少NULL检查)等。顺便说一句,如果您的维护策略以某种方式允许它,则将您的应用程序从VC6移植到可接受的东西(例如VC8或9)。

湖上湖

尽管至少需要Visual C ++ 2003,但我们还是在Firefox中使用了Google Breakpad。其好处还在于它还支持OS X和Linux。

慕标5832272

我最终在Windows上使用了CrashRpt(需要将整个代码库和工具链从MinGW移至本机Microsoft C / C ++编译器),并在Linux上使用了google-breakpad。
打开App,查看更多内容
随时随地看视频慕课网APP