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

查看:89
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆