概述
再来一个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文件夹到breakpadsrctools文件夹下
生成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 Kits8.1Includeumdbghelp.h(1544): error C2220: 警告被视为错误 - 没有生成“object”文件
2>C:Program Files (x86)Windows Kits8.1Includeumdbghelp.h(1544): warning C4091: “typedef ”: 没有声明变量时忽略“”的左侧
2>C:Program Files (x86)Windows Kits8.1Includeumdbghelp.h(3190): warning C4091: “typedef ”: 没有声明变量时忽略“”的左侧
4>C:Program Files (x86)Windows Kits8.1Includeumdbghelp.h(1544): error C2220: 警告被视为错误 - 没有生成“object”文件
4>C:Program Files (x86)Windows Kits8.1Includeumdbghelp.h(1544): warning C4091: “typedef ”: 没有声明变量时忽略“”的左侧
4>C:Program Files (x86)Windows Kits8.1Includeumdbghelp.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编译(1)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复