c++ - 崩溃时如何为我的进程创建小型转储?

标签 c++ windows debugging minidump

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

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

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

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

  • 小型转储在调查崩溃时的效果如何

我使用的是 Windows XP、C++、VC6

最佳答案

您需要以编程方式创建一个小型转储(有一个异常(exception),请参阅下一个链接)。 CodeProject 有一个不错的article on MiniDumps .基本上,您想使用 dbghelp.dll,并使用函数 MiniDumpWriteDump()(参见 MSDN on MiniDumpWriteDump)。

此类转储的效果在很大程度上取决于应用程序。有时,对于优化的二进制文件,它们实际上是无用的。此外,如果没有经验,堆/堆栈损坏错误会导致您误入歧途。

但是,如果优化器对你来说不是太难,那么转储会帮助一大类错误,即所有具有堆栈跟踪+本地值的错误使用的变量很有用,即许多纯虚拟函数调用的东西(即错误的销毁顺序)、访问冲突(未初始化的访问或缺少 NULL 检查)等。

顺便说一句,如果您的维护策略允许,请将您的应用程序从 VC6 移植到可接受的系统,例如 VC8 或 9。您会帮自己一个大忙。

关于c++ - 崩溃时如何为我的进程创建小型转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1547211/

相关文章:

c++ - wc_RsaSSL_Verify 返回 BAD_FUNC_ARG,我不知道为什么

c++ - 调试器在 Eclipse 中找不到源文件

windows - Cygwin中的Apache pig

c++ - fatal error C1083 : Cannot open include file: 'iostream' : No such file or directory

javascript - 动态启用/禁用调试代码

C++ - 从类外部更改私有(private)成员

c++ - 将可变数量的参数传递给类中的另一个方法

windows - 未经认证的 Windows 驱动程序

ios - 如何解决关于 UID 1 符号中 N_SO 的 LLDB 错误

python - 为什么在天体中从地球坐标转换到银河系坐标不保持距离?