vs2017在使用SetUnhandledExceptionFilter函数生成dmp文件分析程序崩溃原因的时候,debug模式生成的exe崩溃的时候能够生成dmp文件,但是release版本的就不行。
有哪位知道这是哪里的设置导致的这个问题,如何解决这个问题?
补充:还有并不是所有的崩溃类型有这个问题,只有一些比如连续两次delete一个指针出现的崩溃问题就会出现这种现象
vs2017在使用SetUnhandledExceptionFilter函数生成dmp文件分析程序崩溃原因的时候,debug模式生成的exe崩溃的时候能够生成dmp文件,但是release版本的就不行。
有哪位知道这是哪里的设置导致的这个问题,如何解决这个问题?
补充:还有并不是所有的崩溃类型有这个问题,只有一些比如连续两次delete一个指针出现的崩溃问题就会出现这种现象
你的问题是Release版本程序崩溃时,没有自动生成minidump文件,还是已经生成了minidump文件,但是无法从minidump文件里查看崩溃时调用栈的信息?
如果是后者,你需要设置Realse编译配置,生成PDB文件(调试符号文件)
https://docs.microsoft.com/en-us/visualstudio/debugger/how-to-set-debug-and-release-configurations?view=vs-2019
如果是前者,可能是你生成minidump文件的方式不对,你应该使用Out-of-Process的方式来处理异常并生成minidump文件。
https://chromium.googlesource.com/breakpad/breakpad/+/HEAD/docs/exception_handling.md
https://docs.microsoft.com/en-us/windows/win32/api/minidumpapiset/nf-minidumpapiset-minidumpwritedump
MiniDumpWriteDump should be called from a separate process if at all possible, rather than from within the target process being dumped. This is especially true when the target process is already not stable. For example, if it just crashed. A loader deadlock is one of many potential side effects of calling MiniDumpWriteDump from within the target process.