IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 通过vcpkg编译breakpad并在qt项目中应用,VS编译器 -> 正文阅读

[开发工具]通过vcpkg编译breakpad并在qt项目中应用,VS编译器

编译brealpad是一个非常麻烦的事情,亲测编译成功后在项目中引用也是各种版本不匹配,所以采用vcpkg直接安装。

1、vcpkg

需要先在本机环境中安装vcpkg。

在Windows下开发C++程序时,常用依赖包的管理是一个头疼的问题。Vcpkg是一个命令行包管理工具,它可以极大地简化三方库的获取、安装、使用和部署流程。详情查看链接:https://zhuanlan.zhihu.com/p/87391067

2、vcpkg安装breakpad

先cd到vcpkg的安装目录,然后执行下条指令,:x64-windows表示安装win64版本。

./vcpkg install breakpad:x64-windows

因为众所周知的原因,下载可能会很慢。不过有大佬给了国内镜像。详情查看链接链接:

https://blog.csdn.net/jackboos/article/details/105026109

3、项目中使用breakpad

查看vcpkg文档后,看介绍说可以在执行一些命令后直接引用vcpkg安装的库。一番折腾后没有成功。所以采用直接引用依赖库的方式。

1、如果执行了上文中的安装breakpad命令,应该可以在如下图中的位置找到安装好的库文件。

vcpkg/packages/breakpad_x64-windows

2、将breakpad_x64-windows拷贝到项目的同级目录中。打开项目属性页,在c/c++选项中的附加包含目录中添加

breakpad_x64-windows\include

链接器选项中的附加库目录添加(release模式)

breakpad_x64-windows\lib;

附加依赖项中添加上个文件夹里两个库的名字

libbreakpad_clientd.lib;libbreakpadd.lib;

即可配置完成。
3、在main文件中添加如下代码测试(在编译时会报错某某文件找不到,只要在引用前面加上breakpad_x64-windows/include/即可。如果不想自己一个个添加也可用我下面提供的)

#include "breakpad_x64-windows/include/client/windows/handler/exception_handler.h"

// 触发crash来测试
void crash() {
    volatile int* a = (int*)(NULL);
    *a = 1;
}

bool callback(const wchar_t* dump_path, const wchar_t* id,
              void* context, EXCEPTION_POINTERS* exinfo,
              MDRawAssertionInfo* assertion,
              bool succeeded) {
    if (succeeded) {
        qDebug() << "Create dump file success";
    } else {
        qDebug() << "Create dump file failed";
    }
    return succeeded;
}


int main(int argc, char* argv[]) {
    QApplication a(argc, argv);

    //获取程序当前运行目录
    QString appDirPath = QCoreApplication::applicationDirPath() + "/crash";

    QDir dir;
    if (!dir.exists(appDirPath)) {
        bool res = dir.mkpath(appDirPath);
        qDebug() << "New mkdir " << appDirPath << " " << res;
    }

    google_breakpad::ExceptionHandler eh(
        L".", NULL, callback, NULL,
        google_breakpad::ExceptionHandler::HANDLER_ALL);


    crash();
    return a.exec();
}

4、vs中realease模式下,如果想直接定位到代码中需要修改一些配置选项。
分别是c/c++中的调试信息格式配置优化配置。链接器的调试选项中选择生成调试信息。以下选项内容并不绝对,自己测试修改。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5、资源
https://download.csdn.net/download/qq_45988470/64499365

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 16:11:43  更:2021-12-18 16:14:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:38:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码