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 ...
随机推荐
- epoll使用具体解释(精髓)
epoll - I/O event notification facility 在linux的网络编程中,非常长的时间都在使用select来做事件触发.在linux新的内核中,有了一种替换它的机制,就 ...
- Apache Solr采用Java开发、基于Lucene的全文搜索服务器
http://docs.spring.io/spring-data/solr/ 首先介绍一下solr: Apache Solr (读音: SOLer) 是一个开源.高性能.采用Java开发.基于Luc ...
- SAP BW 重新初始化
- 升级Flash Builder 4.7中的AIR SDK
原文地址:http://helpx.adobe.com/flash-builder/kb/overlay-air-sdk-flash-builder.html本文并没有“忠于”原文翻译. Flash ...
- visualvm连接服务器jvm进行监控
本地环境,mac: 服务器环境ubuntu: 直接运行jstatd命令,提示 Could not create remote object access denied ("java.util ...
- css 设置全屏背景图片
<div id="div1"><img src="img.jpg" /></div> div#div1{ position: ...
- Getting started with Apache Camel--转载
原文地址:http://www.javacodegeeks.com/2012/12/getting-started-with-apache-camel.html About Camel: Apache ...
- Starship Troopers
Problem Description You, the leader of Starship Troopers, are sent to destroy a base of the bugs. Th ...
- 使用JS制作一个鼠标可拖的DIV(三)——移动带图片DIV
当DIV元素里,存在图片元素的时候,会使拖动出现异常. 因为图片元素本身就支持拖动,所以,只要在图片标签加入:draggable='false'. 如下: <div onmousedown=&q ...
- hibernate 创建session
//1. 创建一个 SessionFactory 对象 SessionFactory sessionFactory = null; //1). 创建 Configuration 对象: 对应 hibe ...