神秘博客

QT VS2017实时生成DUMP崩溃文件

程序运行时,经常会有BUG,尤其是发布版出现BUG,常常不容易快速找到BUG位置,实时打印崩溃文件方便查找BUG

首先添加一个dumpfile.h头文件内容如下,文件出处点击进入

#pragma once

#include <windows.h>
#include <DbgHelp.h>
#pragma comment(lib,"Dbghelp.lib")

long  __stdcall CrashInfocallback(_EXCEPTION_POINTERS *pexcp)
{
	//创建 Dump 文件
	HANDLE hDumpFile = ::CreateFile(
		L"Error.dmp",
		GENERIC_WRITE,
		0,
		NULL,
		CREATE_ALWAYS,
		FILE_ATTRIBUTE_NORMAL,
		NULL
	);
	if (hDumpFile != INVALID_HANDLE_VALUE)
	{
		//Dump信息
		MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
		dumpInfo.ExceptionPointers = pexcp;
		dumpInfo.ThreadId = GetCurrentThreadId();
		dumpInfo.ClientPointers = TRUE;
		//写入Dump文件内容
		::MiniDumpWriteDump(
			GetCurrentProcess(),
			GetCurrentProcessId(),
			hDumpFile,
			MiniDumpNormal,
			&dumpInfo,
			NULL,
			NULL
		);
	}
	return 0;
}

然后在main.cpp引用调用就可以了

记得编译Release发布版的时候修改VS项目属性,设置生成PDB文件

如果运行软件出现崩溃,软件目录下会生成Error.dmp文件,双击用VS打开即可,记得先设置符号路径,加入QT库的PDB文件路径,安装QT时用在线安装器勾选Qt Debug Information Files就是PDB文件,设置好符号路径后使用本机进行调试

如果发生QT库中断时,这时会找不到QT源码文件,打开项目解决方案资源管理器,右键项目属性,调试源文件加入QT的源码路径,然后返回点继续调试就会跳转到QT源码崩溃位置

版权说明:
点赞
  1. 果然说道:

    :haha: :haha: :haha: 非常不错

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

觉得文章有用就请我吃包辣条吧

微信扫一扫打赏