Google Breakpad之七,android平台简明用法

google breakpad android简易使用方法:
breakpad是一个跨平台的c++崩溃处理系统。
包括:dmp生成模块、 上传模块、 服务器存储模块、解析dmp模块 等。

初级只使用dmp生成模块,再加上手动分析dmp即可。
1、编译静态库
解压并拷贝breakpad源码目录到项目中,编译:
./configure --host=arm-linux-androideabi
make -j2

生成的库是:
src/client/linux/libbreakpad_client.a

2、源码中include头文件:
#include "client/linux/handler/exception_handler.h"
然后在源码中加入:
#ifdef USE_DUMP
#ifdef __linux__//下面是linux下的声明方法,其他平台有所不同
 google_breakpad::MinidumpDescriptor descriptor("/");//dmp生成的目录
 google_breakpad::ExceptionHandler eh(descriptor,
  NULL,
  NULL,
  NULL,
  true,
  -1);
#endif
#endif

ExceptionHandler的变量eh在作用域内有效。
比如在main的最开始就加上这两行,那么在整个程序生命周期的异常crash皆可被捕获。

3、修改Android.mk文件,通过USE_DUMP宏可控制是否生成带breakpad的项目版本

确保Application.mk里有APP_STL设置,STLport 或者 GNU libstdc++,然后
在   LOCAL_CFLAGS += \
最后加上一行-DUSE_DUMP
比如:
   LOCAL_CFLAGS += \
      -DANDROID_SDK \
      -DUSE_DUMP

在LOCAL_STATIC_LIBRARIES := \
代码块后加上一行:

LOCAL_STATIC_LIBRARIES += breakpad_client

在mk文件末尾加上:
include ./jni/src/common/breakpad/android/google_breakpad/Android.mk

4、编译项目文件
ndk-build
注意obj文件夹里的项目文件是带符号信息的,lib文件夹里的不带,
所以cp出obj里的文件,部署到测试环境,程序死掉时会生成dmp文件。


5、dmp文件解析

把src/processor/minidump_stackwalk用adb push 到android设备上,比如/目录,然后chmod一下
src/tools/linux/dump_syms/dump_syms同上
解析dmp文件,比如test是我的项目文件,5ee28168-f798-caba-749b962b-312eaf19.dmp 是挂掉后的dmp文件
./dump_syms ./test > test.sym
busybox head -n1 test.sym
屏幕显示:
MODULE Linux arm 6EDC6ACDB282125843FD59DA9C81BD830 test
然后:
mkdir -p ./symbols/test/6EDC6ACDB282125843FD59DA9C81BD830
mv test.sym ./symbols/test/6EDC6ACDB282125843FD59DA9C81BD830
./minidump_stackwalk 5ee28168-f798-caba-749b962b-312eaf19.dmp ./symbols

屏幕显示堆栈信息:
Operating system: Linux
                   0.0.0 Linux 2.6.32-279.11.1.el6.x86_64 #1 SMP Tue Oct 16 15:57:10 UTC 2012 x86_64
 CPU: amd64
      family 6 model 42 stepping 7
      1 CPU

Crash reason:  SIGSEGV//挂掉类型
Crash address: 0x0

Thread 0 (crashed)//挂掉线程id
  0  test!crash() [test.cc : 10 + 0x4]//代码:   *a = 1; //a是一个int*的指针,值为NULL,给NULL赋值1,挂在源码的第10行,从左到右第四个字符的位置挂了,即a。
    rbx = 0x00007fff6c4b8a90   r12 = 0x0000000000401a00
     r13 = 0x00007fff6c4b8bc0   r14 = 0x0000000000000000
     r15 = 0x0000000000000000   rip = 0x0000000000401b2d
     rsp = 0x00007fff6c4b89e0   rbp = 0x00007fff6c4b89e0
     Found by: given as instruction pointer in context
  1  test!main [test.cc : 16 + 0x4]
     rbx = 0x00007fff6c4b8a90   r12 = 0x0000000000401a00
     r13 = 0x00007fff6c4b8bc0   r14 = 0x0000000000000000
     r15 = 0x0000000000000000   rip = 0x0000000000401c29
     rsp = 0x00007fff6c4b89f0   rbp = 0x00007fff6c4b8ae0
     Found by: call frame info
  2  libc-2.12.so + 0x1ecdc
     rbx = 0x0000000000000000   r12 = 0x0000000000401a00
     r13 = 0x00007fff6c4b8bc0   r14 = 0x0000000000000000
     r15 = 0x0000000000000000   rip = 0x0000003d64e1ecdd
     rsp = 0x00007fff6c4b8af0   rbp = 0x0000000000000000
     Found by: call frame info
  3  test!crash() [test.cc : 11 + 0x1]
     rip = 0x0000000000401b35   rsp = 0x00007fff6c4b8b10
     Found by: stack scanning

Loaded modules:
 0x00400000 - 0x00412fff  test  ???  (main)
 0x3d64a00000 - 0x3d64a1ffff  ld-2.12.so  ???
 0x3d64e00000 - 0x3d6518dfff  libc-2.12.so  ???
 0x3d65600000 - 0x3d65818fff  libpthread-2.12.so  ???
 0x3d65a00000 - 0x3d65c83fff  libm-2.12.so  ???
 0x3d6a600000 - 0x3d6a815fff  libgcc_s-4.4.6-20120305.so.1  ???
 0x3d6c600000 - 0x3d6c8f0fff  libstdc++.so.6.0.13  ???
 0x7fff6c4f9000 - 0x7fff6c4f9fff  linux-gate.so  ???

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Qt是一种用于开发跨平台图形用户界面的框架,Google Breakpad是一种开源的异常报告库。要下载qt google breakpad,首先需要在Qt官方网站上下载Qt框架的安装包。在官网上选择对应的操作系统(例如Windows,Linux,Mac等),然后选择所需的Qt版本(例如Qt5,Qt6等)。下载完成后,运行安装包并按照安装向导的指示进行安装。安装完成后,可以在系统中找到Qt的安装目录。 然后,需要在Google Breakpad的官方网站上下载Breakpad的源代码。在官网上找到源代码下载页面,并选择所需的版本。下载完成后,解压缩文件并进入源代码的目录。 接下来,需要将Breakpad源代码与Qt框架进行配置和构建。通过命令行进入Breakpad源代码目录,在该目录下创建一个新的构建目录,并进入该目录。使用CMake命令来配置Breakpad与Qt的构建。具体的配置命令根据不同的操作系统和需求而定。配置完成后,使用make或ninja等构建工具进行构建。 构建完成后,将生成的Breakpad库文件(如libbreakpad.so或breakpad.dll等)与Qt应用程序进行链接。可以在Qt应用程序的.pro文件中添加链接库的配置,或者在构建命令中进行链接。完成链接后,重新编译和运行Qt应用程序即可使用Google Breakpad进行异常报告的捕获和处理。 综上所述,下载Qt和Google Breakpad的过程包括下载Qt框架安装包、下载Breakpad源代码、配置和构建Breakpad与Qt的链接,并在Qt应用程序中使用Breakpad进行异常报告的处理。 ### 回答2: QT是一款强大的跨平台应用开发框架,Google Breakpad是一套用于应用程序崩溃报告的开源工具。想要在QT中下载Google Breakpad,可以按照以下步骤进行操作。 首先,在浏览器中搜索"Google Breakpad"并进入官方网站或GitHub页面。在该页面中,可以找到相关的下载链接和文档。 其次,根据自己的操作系统选择合适的版本下载。Google Breakpad支持多种操作系统,如Windows、Linux和Mac OS X等。选择与QT兼容的版本进行下载。 下载完成后,解压缩下载的文件。其中包含了Google Breakpad的源代码和示例程序等。 接下来,可以根据Google Breakpad提供的文档和示例程序进行学习和使用。文档中详细介绍了Google Breakpad的使用方法和参数设置等。 最后,根据QT的需求,将Google Breakpad集成到QT应用程序中。通过在QT项目中引入Google Breakpad的代码和相关文件,可以实现应用程序的崩溃报告和分析功能。 总之,下载并集成Google Breakpad到QT中可以帮助开发者更好地追踪和分析应用程序的崩溃问题,提高应用程序的可靠性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值