版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/daoer_sofu/article/details/103419445
静态库
MFC静态库
crt静态库(/MT)
/MD动态库
vs2015以后的vc版本增加UCRT支持,导致Win10版本和 Win7等以前版本不兼容(win10除了exe程序还有uwp程序,兼容win10系统的所有终端,包括手机)
minidump生成
通过SetUnhandledExceptionFilter设置全局异常钩子函数
代码语言:javascript复制SetUnhandledExceptionFilter(global_exception);
long __stdcall global_exception(_EXCEPTION_POINTERS* excp)
{
BOOST_LOG_TRIVIAL(error) << "program exception,"<<("error address %x/n", excp->ExceptionRecord->ExceptionAddress);
Logger::instance()->obj() << "程序异常";
HANDLE hFile = ::CreateFile(_T("./dumpfile.dmp"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
MINIDUMP_EXCEPTION_INFORMATION einfo;
einfo.ThreadId = ::GetCurrentThreadId();
einfo.ExceptionPointers = excp;
einfo.ClientPointers = FALSE;
::MiniDumpWriteDump(::GetCurrentProcess(), ::GetCurrentProcessId(), hFile, MiniDumpNormal, &einfo, NULL, NULL);
::CloseHandle(hFile);
}
return EXCEPTION_EXECUTE_HANDLER;
}
minidump分析
minidump文件和pdb、exe相同目录下
项目中直接打开minidump调试
或者直接打开minidump文件调试
项目添加源文件路径