Google Breakpad part 1 : Getting Started With Windows Client
准备
1、Python
2、Visual Studio
3、svn checkout http://google-breakpad.googlecode.com/svn/trunk/ source code
编译
Traceback (most recent call last):
File "D:\google_breakpad\src\tools\gyp\/gyp", line , in <module>
sys.exit(gyp.main(sys.argv[:]))
File "D:\google_breakpad\src\tools\gyp\pylib\gyp\__init__.py", line , in main
return gyp_main(args)
File "D:\google_breakpad\src\tools\gyp\pylib\gyp\__init__.py", line , in gyp_main
options.circular_check)
File "D:\google_breakpad\src\tools\gyp\pylib\gyp\__init__.py", line , in Load
depth, generator_input_info, check, circular_check)
File "D:\google_breakpad\src\tools\gyp\pylib\gyp\input.py", line , in Load
VerifyNoGYPFileCircularDependencies(targets)
File "D:\google_breakpad\src\tools\gyp\pylib\gyp\input.py", line , in Veri
fyNoGYPFileCircularDependencies
' '.join(bad_files)
gyp.input.CircularException: Some files not reachable, cycle in .gyp file depend
ency graph detected involving some or all of: src\client\windows\handler\excepti
on_handler.gyp src\client\windows\tests\crash_generation_app\crash_generation_ap
p.gyp src\client\windows\breakpad_client.gyp src\client\windows\sender\crash_rep
ort_sender.gyp src\client\windows\unittests\client_tests.gyp src\client\windows\
crash_generation\crash_generation.gyp
2、运行之后在 src\client\windows目录下会生成一个solution,开打solution,F7生成。
注意:Debug版生成的时候一切正常,但切换到Release版本之后,生成的时候会遇到一个错误:
>------ 已启动生成: 项目: crash_generation_server, 配置: Release Win32 ------
>生成启动时间为 // ::。
>生成启动时间为 // ::。
>InitializeBuildStatus:
> 正在创建“D:\google_breakpad\src\client\windows\Release\obj\crash_generation_server\crash_generation_server.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
>InitializeBuildStatus:
> 正在创建“D:\google_breakpad\src\client\windows\Release\obj\common\common.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
>ClCompile:
> client_info.cc
> minidump_generator.cc
> crash_generation_server.cc
>crash_generation_server.cc(): error C2220: 警告被视为错误 - 没有生成“object”文件
>crash_generation_server.cc(): warning C4189: “error_code”: 局部变量已初始化但不引用
>crash_generation_server.cc(): warning C4189: “error_code”: 局部变量已初始化但不引用
>crash_generation_server.cc(): warning C4189: “error_code”: 局部变量已初始化但不引用
>ClCompile:
> http_upload.cc
> guid_string.cc
> string_utils.cc
>Lib:
> gtest.vcxproj -> D:\google_breakpad\src\client\windows\Release\lib\gtest.lib
>FinalizeBuildStatus:
> 正在删除文件“D:\google_breakpad\src\client\windows\Release\obj\gtest\gtest.unsuccessfulbuild”。
> 正在对“D:\google_breakpad\src\client\windows\Release\obj\gtest\gtest.lastbuildstate”执行 Touch 任务。
>
>生成成功。
>
>已用时间 ::18.07
>
>生成失败。
原因是错误被视为警告的选项,在Release模式下编译的时候增加了NDEBUG选项,导致了assert被关掉了,所以error_code没有被其他地方引用到,所以编译器发出警告。
然后又被视为错误,所以导致crash_generation_server工程编译失败。
void CrashGenerationServer::HandleReadingState() {
assert(server_state_ == IPC_SERVER_STATE_READING); DWORD bytes_count = ;
bool success = GetOverlappedResult(pipe_,
&overlapped_,
&bytes_count,
FALSE) != FALSE;
DWORD error_code = success ? ERROR_SUCCESS : GetLastError(); if (success && bytes_count == sizeof(ProtocolMessage)) {
EnterStateImmediately(IPC_SERVER_STATE_READ_DONE);
} else {
// We should never get an I/O incomplete since we should not execute this
// unless the Read has finished and the overlapped event is signaled. If
// we do get INCOMPLETE, we have a bug in our code.
assert(error_code != ERROR_IO_INCOMPLETE); EnterStateImmediately(IPC_SERVER_STATE_DISCONNECTING);
}
}
最简单的解决方法是在下图的这个地方添加4189的警告。
然后重新生成,问题解决。
这次就先介绍到这里,下次介绍一下breakpad的使用。
Google Breakpad part 1 : Getting Started With Windows Client的更多相关文章
- Google Breakpad 完全解析(二) —— Windows前台实现篇
原创文章,转载请标明出处:Soul Apogee (http://bigasp.com),谢谢. 好,看完了如何使用breakpad,我们现在看看breakpad在Windows下到底是如何实现的呢? ...
- Google Breakpad 完全解析(一) —— Windows入门篇
原创文章,转载请标明出处:Soul Apogee (http://bigasp.com),谢谢. Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块,他支持Windows,Lin ...
- C++库(Google Breakpad)
Google Breakpad是什么? 一个开源的多平台崩溃报告系统. Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块,它支持Windows,Linux和Mac和Solari ...
- google breakpad for linux(2)
breakpad 是什么 breakpad 是一个包含了一系列库文件和工具的开源工具包,使用它可以帮助我们在程序崩溃后进行一系列的后续处理,如现场的保存(core dump),及事后分析(重建 cal ...
- Google Breakpad 之一,跨平台crash 处理上报系统简介
Google Breakpad 之一,跨平台crash 处理上报系统简介 http://blog.csdn.net/wpc320/article/details/8290501 Google Brea ...
- Google Breakpad: 实战crash .
Google Breakpad: 实战crash . http://blog.csdn.net/zm_21/article/details/24795205 C/C++程序最棘手的时候就是一个字“挂” ...
- google breakpad 使用初步总结
项目地址:https://code.google.com/p/google-breakpad/ 访问不了请挂VPN 这是一个由google主导的开源项目,官方介绍为:An open-source ...
- Google Breakpad · 基础介绍
Google breakpad是一个跨平台的崩溃转储和分析框架和工具集合. 三个主要组件 ◆ client 以library的形式内置在你的应用中,当崩溃发生时写 minidump文件 ◆ symbo ...
- Android使用google breakpad捕获分析native cash
Android 开发高手课 课后练习(1) 一.Chapter01 崩溃 https://time.geekbang.org/column/article/70602 https://github.c ...
随机推荐
- windows command ftp 中文文件名乱码解决方法
有时,使用临时的windows机子,要进行ftp简单操作,但又不想装其它的ftp-client,可以直接使用windows command中的命令ftp来操作. 通常,ftp服务器按标准,使用utf8 ...
- phpcms v9和discuz X3.1实现同步登陆退出论坛(已实现)
网络上文章很多,按步骤配置好了之后phpcms可以同步登录dz,但是dz登录后状态却无法同步到phpcms,网络上找了很多资料都大同小异,头大.只能自己调试了,废话不多说了. 以下网络上抄 ...
- mysql优化:连接数
有时候我们会遇见"MySQL: ERROR 1040: Too many connections"的异常,一种原因是訪问量过高,MySQLserver抗不住,这个时候就要考虑添加从 ...
- Masonry+Infinite-Scroll实现无刷新无分页完美瀑布流(转)
一.Masonry 是基于Jquery插件,用于对CSS布局的可移动层进行重新布局.Masonry愿意石工,可以这样形象的理解,页面上很多大小不一的移动层可以想象成散乱的石头,经过Masonry这个石 ...
- CODE:BLOCK中的CreateProcess: No such file or directory
现象: WINDOWS安装MINGW4.8.1,环境变量设置后,命令行窗体G++能够执行.但编译文件时提示: CreateProcess: No such file or directory. 安装C ...
- myloader原理0
开源MySQL多线程逻辑导入工具myloader原理与改进 在上一篇中,介绍了多线程备份工具mydumper的实现及网易对其所做的优化,本篇聊聊与mydumper配合使用的myloader工具. my ...
- Word2010编号列表&多级列表
1.引用场景 对于一份标准.漂亮的word文档,编号列表和多级列表的设置时必不可少的,正因为有它们,文档看起来才更专业,使用起来才更加的方便.如下面截图一般,这是十分常见的多级列表设置 ...
- Ng-include 例子
<body> <div ng-app="myApp"> <div ng-controller="firstController"& ...
- cocos2d-x lua 调用onEnter和onExit
cocos2d-x lua 调用onEnter和onExit version: cocos2d-x 3.6 onEnter和onExit在lua中不会因节点别add和remove而直接被调用,当子节点 ...
- python(1) - 变量小测试
下面看一道题目: a = 3 b = a a = 5 print(a,b) 程序最后输出的a,b值分别是多少呢? 先想一想,然后我们执行一下看看正确答案: 正确答案 a 的值是5, b的值是3,为什么 ...