如何在崩溃时为我的进程创buildminidump?
我无法通过更改系统设置来创build我的进程的小型转储。 所以我的问题是:
-
当系统崩溃时,系统是否会为用户进程创build一个小型转储?
如果是,我需要configuration哪个设置
-
或者我必须以编程方式创buildminidump。
-
在调查碰撞时,小型垃圾车的效率如何
我正在使用Windows XP,C ++,VC6
您需要编程创build一个小型转储(有一个例外,请参阅下一个链接)。 CodeProject有一个很好的文章在MiniDumps 。 基本上,您要使用dbghelp.dll
,并使用函数MiniDumpWriteDump()
(请参阅MiniDumpWriteDump上的MSDN )。
这种转储的有效性在很大程度上取决于应用程序。 有时候,为了优化二进制文件,它们实际上是无用的。 另外,如果没有经验,堆/堆栈腐败错误会导致你误入歧途。
然而,如果优化器对你来说不是太难,那么在转储的帮助下存在一大类错误,也就是所有存在本地使用的variables的堆栈跟踪+值的错误都是有用的,即许多纯虚拟function调用的东西(即错误的破坏顺序),访问冲突(未初始化访问或缺lessNULL检查)等
顺便说一句,如果你的维护策略以某种方式允许的话,将你的应用程序从VC6移植到VC8或9等可以接受的东西。你会为自己做一个大忙。
感谢所有的观看和答复特别感谢gimpf,我search互联网和msdn。
我在debugInfo.com上发现了一篇优秀的文章,值得一读:
有效的小转储
我们在Firefox中使用Google Breakpad ,尽pipe至less需要Visual C ++ 2003。好处是它也支持OS X和Linux。
我最终在Windows上使用了CrashRpt(要求我将整个代码库和工具链从MinGW移动到本地Microsoft C / C ++编译器)以及Linux上的google-breakpad。
如果你有几块钱,可以留意一下AQtrace 。 这在debugging器内部发生崩溃的许多优点,在远程最终用户机器上运行。