Windows下 breakpad编译(1)
来源:互联网 发布:韩版note8网络制式 编辑:程序博客网 时间:2024/06/06 17:16
再来一个google自带光环的开源库:Google Breakpad
什么是Google Breakpad?
Google Breakpad is a cross platform crash handler which generates minidumps when your application crash. Users can send these minidumps to you and it contains valuable information allowing you to figure out why it crashed on them.
看到了吗?是当你程序崩溃的时候产生一个minidumps文件的,之前我们也写过两篇博客:
《windows客户端开发–让你的客户端崩溃之前生成dump文件》
《Qt–让你的客户端崩溃之前生成dump文件》
获取BreakPad
- 1
- 1
安装Python
这里面略过了,但是记住要使用Python2.x,,Python3.x会报错
什么是gyp
GYP(Generate Your Projects)是由 Chromium 团队开发的跨平台自动化项目构建工具,Chromium 便是通过 GYP 进行项目构建管理。
获取gyp
- 1
- 1
安装gyp
- 1
- 2
- 3
- 1
- 2
- 3
拷贝gyp文件夹到breakpad\src\tools文件夹下
生成Breakpad的sln文件
进入刚刚拷贝的gyp目录,然后执行:
gyp.bat –no-circular-check “../../client/windows/breakpad_client.gyp”
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
这里要注意,一定不能使用绝对路径,要使用相对路径,所以为什么要拷贝gyp文件夹到tools文件夹下面。
使用vs2015编译
刚才我看看到了提示,missing几个文件,所以我们这里不能编译unittest下的两个工程,暂时不理会
错误:
2>C:\Program Files (x86)\Windows Kits\8.1\Include\um\dbghelp.h(1544): error C2220: 警告被视为错误 - 没有生成“object”文件
2>C:\Program Files (x86)\Windows Kits\8.1\Include\um\dbghelp.h(1544): warning C4091: “typedef ”: 没有声明变量时忽略“”的左侧
2>C:\Program Files (x86)\Windows Kits\8.1\Include\um\dbghelp.h(3190): warning C4091: “typedef ”: 没有声明变量时忽略“”的左侧
4>C:\Program Files (x86)\Windows Kits\8.1\Include\um\dbghelp.h(1544): error C2220: 警告被视为错误 - 没有生成“object”文件
4>C:\Program Files (x86)\Windows Kits\8.1\Include\um\dbghelp.h(1544): warning C4091: “typedef ”: 没有声明变量时忽略“”的左侧
4>C:\Program Files (x86)\Windows Kits\8.1\Include\um\dbghelp.h(3190): warning C4091: “typedef ”: 没有声明变量时忽略“”的左侧
解决方案,把警告当错误 选择否。
编译后,在debug文件夹下:
使用Breakpad生成dump文件
前戏有点复杂,现在开始使用。把之前生成的几个lib,包含进来
common.lib
exception_handler.lib
crash_generation_server.lib
crash_generation_client.lib
头文件目录导进来:
编写代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
可能的错误:
common.lib(guid_string.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(main.obj 中)
解决方法:
就是编译库的时候 和现在使用库的工程 选择的代码生成方式不一致:
如何根据生成的dump定位错误代码
文件->打开->文件,找到刚生成的dump文件,然后点击“使用仅限本机进行调试”
结果:
准确定位!!!!
- Windows下 breakpad编译(1)
- Windows下编译breakpad (2)
- [Google Breakpad] windows平台下的编译
- breakpad在linux下编译
- Windows下使用breakpad进行崩溃DUMP收集与分析
- Windows下用breakpad抓取C++程序崩溃报告
- Google Breakpad 在 windows下捕获程序崩溃报告
- Google Breakpad在windows下捕获程序崩溃报告
- Google Breakpad 用VS编译windows和android平台的库文件
- libharu(1):windows下编译方法
- breakpad
- ACE编译(windows下)
- 嵌入式linux上Google breakpad编译使用
- Google Breakpad 完全解析(一) —— Windows入门篇
- Google Breakpad 完全解析(一) —— Windows入门篇
- Google Breakpad 完全解析(二) —— Windows前台实现篇
- Google Breakpad 完全解析(一) —— Windows入门篇
- Google Breakpad 完全解析(二) —— Windows前台实现篇
- 图—定义与表示
- Vim基础配置
- Memcached的特点
- 最短路径 输出路径 Dijkstra算法
- 浅谈协方差矩阵
- Windows下 breakpad编译(1)
- DAO和DTO的区别
- ajax发起post请求
- canvas+map/area实现鼠标经过提示信息
- 历届试题 网络寻路 蓝桥杯
- hdu 2053
- 跟我一起学C++课程笔记(第一天)
- 设计模式
- 链表总结