在Windows平台部署C++程序,如何定位崩溃原因

使用Qt库,Qt的依赖库使用了 windeployqt 工具,本机win10把Qt安装目录重命名后可以正常运行。
在另一台win7机器下使用动态库运行也没有问题,在依赖window 2008server下运行就崩溃。
使用了 depends 工具也没有看到什么特别的,不知道部署时遇到这种问题,如何定位。

阅读 4.1k
1 个回答

试试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); //设置异常处理函数

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题