繁体   English   中英

内存转储未在C ++发布模式下写入

[英]Memory Dump not being written in C++ Release mode

我一直在使用http://www.codeproject.com/Articles/1934/Post-Mortem-Debugging-Your-Application-with-Minidu从我的应用程序中获取转储文件,该文件总是在另一个系统上崩溃。

所以我所拥有的是Header文件和CPP,并且在调试模式下,但没有附加调试器,它询问我是否要创建dmp文件,然后崩溃,但在发布模式下,它只是崩溃。

基本上我一直在使用的代码是

void IndexFault(int n)
{
    unsigned char* smallArray = new unsigned char[4];
    printf((const char*)smallArray[n]);
}

MiniDumper* mDump = new MiniDumper("Dumpfile");

int main()
{
    IndexFault(4);
    return 0;
}

再次,如果执行从调试模式创建的exe,我得到的文件就好了,发布后我什么都没得到。 在两种情况下都使用64位代码。 一旦这个工作正常,我会将它应用到我的真实代码中,但截至目前,我无法弄清楚发生了什么。 我使用的Minidumpwriter来自上述网站。

我相信你错过了这一步:

要调用API,您需要通过使用SetUnhandledExceptionFilter API设置未处理的异常处理程序来捕获崩溃。 这允许在应用程序中发生未处理的异常的任何时候调用过滤器函数。 在某些未处理的异常中,例如双栈故障,操作系统将立即终止应用程序而不调用过滤器或JIT调试器

无论如何,我个人更喜欢在这种情况下使用WinDbg。 只需使用它附加到远程进程并获取该转储。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM