cocos2dx使用googlebreakpad收集崩溃日志
来源:互联网 发布:红衣军 知乎 编辑:程序博客网 时间:2024/06/07 04:40
Googlebreakpad:SUN下载地址:http://google-breakpad.googlecode.com/svn/trunk
搭建环境:
NDK版本:
r10C以上,因r10c版本补齐了<sys/user.h>和<sys/ucontext.h>
本人使用r10d版本:下载链接:
https://dl.google.com/android/ndk/android-ndk-r10d-linux-x86_64.bin
编译环境:window和linux均可,但是解析崩溃dump文件需要linux
步骤一:
把googlebreakpad文件放到工程平级目录:
步骤二:
把breakpad文件链接到工程中,仿照cocos2d文件夹设置,此步骤是为了方便调试。
完成后目录结构如下:
步骤三:
修改jni/Android.mk文件,加入breakpad/android/google_breakpad/Android.mk文件,编译动态库。
文件修改如下:
添加动态链接库:LOCAL_STATIC_LIBRARIES+= breakpad_client
导入googlebreakpad的Android.mk:注意路径。
$(call import-module,../../breakpad/android/google_breakpad)
步骤四:
这时,编译工程,会出错,因为googlebreakpad的Android.mk文件LOCAL_SRC_FILES缺少导入文件。
添加完毕后如下:
// 缺少文件如下:
src/client/linux/microdump_writer/microdump_writer.cc\
src/client/linux/dump_writer_common/seccomp_unwinder.cc\
src/client/linux/dump_writer_common/thread_info.cc \
src/client/linux/dump_writer_common/ucontext_reader.cc \
../cocos2d/external/ConvertUTF/ConvertUTF.c \
# src/common/convert_UTF.c \
其中把 src/common/convert_UTF.C 替换成
cocos2d/external/ConvertUTF/ConvertUtf.c,否则会出现重复定义错误:multiple definition of 'ConvertUTF8toUTF16'等等一堆类似的错误。
相应的,需要把src/common/string_conversion.cc中的
#include "common/convert_UTF.h"替换成
#include "../../cocos2d/external/ConvertUTF/ConvertUTF.h"
如图:
恭喜,这时就可以编译通过了。
步骤五:把googlebreakpad使用到工程中:
我是放在main.cpp中:
其中:google_breakpad::MinidumpDescriptordescriptor("/mnt/sdcard");表示dump文件保存的文件目录,一定是已经创建好的目录。
步骤六:随便写一个崩溃,捕获日志dmp:
怎样查看这个崩溃信息:必须在linux设备下。
使用的到的工具:
dump_syms在breakpad/src/tools/linux/dump_syms/dump_syms
minidump_stackwalk在breakpad/src/processor/minidump_stackwalk
busybox系统自带
步骤一:编译工具
cd breakpad 进入文件目录
./configure 执行googlebreakpad自带的配置工具
make 编译googlebreakpad,完成后生成 dump_syms(有window版本的exe文件)和minidump_stackwalk(这个没有找到window版本)。
步骤二:使用工具查找崩溃日志:
为了方便我们把dump_syms和minidump_stackwalk还有崩溃日志 0e879430-1591-82d1-453ea515-3b41513b.dmp放在同一文件夹下面。
另外还需要库文件libcocos2dcpp.so(这里必须使用/proj.android/obj/local/armeabi下生成的),注意libs/armeabi/libcocos2dcpp.so这个不可以哦!
1. ./dump_syms libcocos2dcpp.so >libcocos2dcpp.so.sym
2. 使用busyboxhead -n1 libcocos2dcpp.so.sym可以得到第一行:
MODULELinux arm 87C34A3F51EC6572E561D3ACF67A82AA0libcocos2dcpp.so
3. mkdir-p ./symbols/libcocos2dcpp.so/87C34A3F51EC6572E561D3ACF67A82AA0
4. mvlibcocos2dcpp.so.sym ./symbols/libcocos2dcpp.so/87C34A3F51EC6572E561D3ACF67A82AA0/
5. 最后生成crash文件:./minidump_stackwalk0e879430-1591-82d1-453ea515-3b41513b.dmp ./symbols/ > crash.log
6. 使用gedit查看crash.log:发现String.cpp 60行报错方法是Text::setString。
- cocos2dx使用googlebreakpad收集崩溃日志
- Cocos2dx崩溃日志跟踪
- Android崩溃日志收集
- ios 崩溃日志收集
- Android崩溃日志收集
- ios 崩溃日志收集
- iOS崩溃日志收集
- iOS崩溃日志收集
- android app崩溃日志收集
- android Activity崩溃日志收集
- iOS程序崩溃日志收集
- Android Native 崩溃日志收集
- 集成Firebase收集崩溃日志
- [cocos2dx]利用NDK崩溃日志查找BUG
- 用Crashlytics收集ios崩溃日志
- android app崩溃日志收集以及上传
- 【安卓笔记】崩溃日志收集
- android--app崩溃日志收集以及上传
- jsp编程第一课
- iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现
- c/c++一百道小程序
- 记录puppet mcollective 构建过程
- Hessian与REST性能测试
- cocos2dx使用googlebreakpad收集崩溃日志
- 【转】SLF4J 的几种实际应用模式--之三:JCL-Over-SLF4J+SLF4J
- oracle学习笔记,待续~
- hdu 3342 Legal or Not
- RadiusNetwork iBeacon Library For Android 设备发现过程梳理
- hdu oj 5000 Clone DP
- 修改filesystemio_options 引起的故障
- UI 登陆界面的写法
- C#中自定义异常类