• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2025-03-15 00:27 Aet 隐藏边栏 |   抢沙发  4 
文章评分 2 次,平均分 5.0

拉代码

  1. 开启VPN
  2. cmd设置

  1. 在某个位置创建文件夹

  1. 第一次拉代码用fetch breakpad
    1. 这是默认depot_tools已经下好了,并且环境变量也设置好了
  2. 遇到问题如下:

  1. 通过切分支解决

    1. 比如chrome_99
  2. 这个时候是第二次执行代码了,要用gclient sync

生成构建配置

  1. 生成gn构建文件

  1. 进行一些调整修改
    1. is_debug = true Debug模式
    2. target_cpu = "x86" 32位架构
    3. symbol_level = 2 包含完整调试符号

  1. 上面这种ninjagn gen的方法,实践过程中遇到各种问题,后面放弃转而使用gyp方法

编译breakpad

python2.7

  1. 先安装了最新的2.7版本的python-2.7.18rc1.amd64.msi

gpy

  1. 下载了chromium这个版本的gpy
  2. 解压缩后,进入压缩后的目录,执行:

  1. 定位了gyp的位置
    1. 这一步可能需要
    2. C:\Python27\lib\site-packages\添加到了环境变量,位于python2的下面

  1. 验证安装

breakpad代码

  1. 在一次实践中,我是弄好环境后再拉的代码
  2. 方式和上面拉代码的方法一样,
    1. 第一次执行fetch breakpad
    2. 然后切到chrome_99分支
    3. 然后执行gclient sync

生成sln

  1. 进入到\breakpad\src\src\client\windows这个目录
  2. 执行下面的命令行
    1. 这里vs2019对应着后面的2017
    2. 这里vs2022对应着后面的2019

生成相关库

  1. 注意4个工程
    1. common
    2. exception_handler
    3. crash_generation_client
    4. crash_generation_server
  2. 注意按需调整C/C++代码生成多线程调试模式
    1. MTMD的匹配问题
  3. 注意,server编译不过,可以关掉把警告视为错误

使用

  1. 进程内写dump,不需要crash_generation_server库,只需要crash_generation_clientexception_handlercommon
  2. 进程外写dump就需要crash_generation_server,也就是软件启动后是两个进程,一个是软件自己的进程,还有一个专门写dump的进程,两个进程间通过pipe(命名管道)通讯
    1. 当软件崩溃时会把崩溃信息通过pipe发送到写dump进程服务进行写入dump文件

编译minidump_stackwalk

概述

  1. 在程序崩溃生成dump后,需要minidump_stackwalkdump_syms解析dump文件,来分析具体那个线程下的崩溃位置调用堆栈
  2. dump_syms在项目中已经提供,在breakpad\src\tools\windows\binaries下,minidump_stackwalk需要我们自己编译

生成sln

  1. 生成processor.sln

  1. 可能需要移除common

编译wingetopt库

  1. minidump_dumpminidump_stackwalk中使用到了getopt函数(unistd.h包含getopt声明),不过这个函数在windows下没有直接实现
    1. windows下需要用其他库(wingetopt)实现
  2. https://github.com/alex85k/wingetopt
  3. cmake编译

其他问题

  1. https://www.cnblogs.com/GengMingYan/p/17771193.html

验证与集成

生成符号文件

测试捕获奔溃

  1. 编译参数:需链接-lbreakpad_client并指定头文件路径

分析Minidump

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享