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 ...
随机推荐
- QuickXdev+sublime text打造quick-cocos2d-x开发环境
Sublime 插件安装方法: 一.简单的安装方法 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: import urllib.request, ...
- Cucumber 入门一
(转自:http://www.cnblogs.com/jarodzz/archive/2012/07/02/2573014.html) 第一次看到Cucumber和BDD(Behavior Drive ...
- iOS开发——UI篇OC篇&初始化图片方式
初始化图片方式 一.读取图片 1.从资源(resource)读取 [cpp] view plaincopyprint? UIImage* image=[UIImage imageNamed:@&q ...
- ios开发——实用技术OC篇》倒计时实现的两种方法
倒计时实现的两种方法 timeFireMethod函数,timeFireMethod进行倒计时的一些操作,完成时把timer给invalidate掉就ok了,代码如下: secondsCountDow ...
- PHP获取用户真实 IP , 淘宝IP接口获得ip地理位置(转)
<?php /** * 获取用户真实 IP */ function getIP() { static $realip; if (isset($_SERVER)){ if (isset($_SER ...
- C++ 模板类demo
#include <iostream> using namespace std; template <typename T> class MyVector { friend o ...
- 微信朋友圈分享页面(JS-SDK 1.0)
微信更新sdk后大量分享朋友圈代码失效,标题 缩略图 描述无法自定义 新版SDK分享文章步骤 1.绑定域名 (方法参考 http://mp.weixin.qq.com/wiki/7/aaa137b55 ...
- 1085. Perfect Sequence (25)
the problem is from PAT,which website is http://pat.zju.edu.cn/contests/pat-a-practise/1085 At first ...
- Linux shell 脚本攻略之批量重命名
摘自:<Linux shell 脚本攻略>
- proxy代理类
package cn.hncu.proxy.rent; import java.lang.reflect.InvocationHandler;import java.lang.reflect.Meth ...