在Windows平台部署C++程序,如何定位崩溃原因
本文介绍了在Windows平台部署C++程序,如何定位崩溃原因的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
使用Qt库,Qt的依赖库使用了 windeployqt 工具,本机win10把Qt安装目录重命名后可以正常运行。
在另一台win7机器下使用动态库运行也没有问题,在依赖window 2008server下运行就崩溃。
使用了 depends 工具也没有看到什么特别的,不知道部署时遇到这种问题,如何定位。
解决方案
试试mindump
#include <Dbghelp.h>
#pragma comment(lib,"Dbghelp.lib")
LONG WINAPI ExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo)
{
if (wcslen(g_dump_path) == 0) return 0;
HANDLE hFile = ::CreateFile(g_dump_path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
MINIDUMP_EXCEPTION_INFORMATION einfo;
einfo.ThreadId = ::GetCurrentThreadId();
einfo.ExceptionPointers = ExceptionInfo;
einfo.ClientPointers = FALSE;
::MiniDumpWriteDump(::GetCurrentProcess(), ::GetCurrentProcessId(), hFile, MiniDumpWithFullMemory, &einfo, NULL, NULL);
::CloseHandle(hFile);
}
return 0;
}
使用方法:SetUnhandledExceptionFilter(ExceptionFilter); //设置异常处理函数
这篇关于在Windows平台部署C++程序,如何定位崩溃原因的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文