如何在崩溃时为我的进程创buildminidump?

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

  • 当系统崩溃时,系统是否会为用户进程创build一个小型转储?

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

  • 或者我必须以编程方式创buildminidump。

  • 在调查碰撞时,小型垃圾车的效率如何

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

您需要编程创建一个小型转储(有一个例外,请参阅下一个链接)。 CodeProject有一个很好的文章在MiniDumps 。 基本上,您要使用dbghelp.dll ,并使用函数MiniDumpWriteDump() (请参阅MiniDumpWriteDump上的MSDN )。

这种转储的有效性在很大程度上取决于应用程序。 有时,为了优化二进制文件,它们实际上是无用的。 另外,如果没有经验,堆/堆栈腐败错误会导致你误入歧途。

然而,如果优化器对你来说不是太难,那么在转储的帮助下存在一大类错误,也就是所有存在本地使用的变量的堆栈跟踪+值的错误都是有用的,即许多纯虚拟功能调用的东西(即错误的破坏顺序),访问冲突(未初始化访问或缺少NULL检查)等

顺便说一句,如果你的维护策略以某种方式允许的话,把你的应用程序从VC6移植到VC8或者9等可以接受的东西。你会为你自己一个大忙。

感谢所有的观看和答复特别感谢gimpf,我搜索互联网和msdn。

我在debugInfo.com上发现了一篇优秀的文章,值得一读:

有效的小转储

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

我最终在Windows上使用了CrashRpt(要求我将整个代码库和工具链从MinGW移动到本地Microsoft C / C ++编译器)以及Linux上的google-breakpad。

如果你有几块钱,可以留意一下AQtrace 。 这在调试器内部发生崩溃的许多优点,在远程最终用户机器上运行。