在Android上玩google-breakpad(崩溃日志收集)

简介: 准备:把ndk目录加到$PATH。首先得到代码svn co http://google-breakpad.googlecode.com/svn/trunk breakpad然后把整个代码目录breakpad复制一份,一份用来编译linux的tool,一份编android的静态库。

准备:把ndk目录加到$PATH。

首先得到代码

svn co http://google-breakpad.googlecode.com/svn/trunk breakpad

然后把整个代码目录breakpad复制一份,一份用来编译linux的tool,一份编android的静态库。

编译Tool:

cd breakpad
chmod +x configure
./configure
make

编译Android静态库:

cd breakpad
SYSROOT=$android-ndk-r8d/platforms/android-8/arch-arm
export CC="arm-linux-androideabi-gcc --sysroot=$SYSROOT"
./configure --disable-processor --disable-tools --host=arm-linux-androideabi

然后新建一个terminal(为了把export CC的效果去除),继续:

cd breakpad
cd android/sample_app
ndk-build
这样就能编出示例程序。


加到自己的程序:

在自己的Android.mk里加入

include $(LOCAL_PATH)/src/breakpad/android/google_breakpad/Android.mk
C/C++代码里加入:

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <jni.h>
#include <assert.h>
#include <android/log.h>
#include "client/linux/handler/exception_handler.h"

static google_breakpad::ExceptionHandler *handler = NULL;

JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved)
{
	google_breakpad::MinidumpDescriptor descriptor("/sdcard");
	handler = new google_breakpad::ExceptionHandler(descriptor,
			  NULL,
			  NULL,
			  NULL,
			  true,
			  -1);
	return JNI_VERSION_1_6;
}
在JNI_Onload里注册client。

然后java代码里加载你的so。

System.loadLibrary("MySo");


如果崩溃了,会在/sdcard/下生成 UUID.dmp(UUID是真的一串UUID)。

把UUID.dmp拷贝出来,然后参考这个做。

http://blog.csdn.net/brook0344/article/details/20126351

得到崩溃堆栈文本后,使用addr2line来把函数地址转换成代码行

参考这个:

http://blog.csdn.net/yanzheng1113/article/details/8148091

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
3月前
|
监控 Android开发 C语言
深度解读Android崩溃日志案例分析2:tombstone日志
深度解读Android崩溃日志案例分析2:tombstone日志
83 0
|
3月前
|
IDE API 开发工具
Google I/O :Android Jetpack 最新变化(四)Compose
Google I/O :Android Jetpack 最新变化(四)Compose
102 0
|
3月前
|
JSON IDE 测试技术
Google I/O :Android Jetpack 最新变化(二) Performance
Google I/O :Android Jetpack 最新变化(二) Performance
112 0
|
3月前
|
SQL API Android开发
Google I/O :Android Jetpack 最新变化(一) Architecture
Google I/O :Android Jetpack 最新变化(一) Architecture
68 0
|
6月前
|
API 开发工具 Android开发
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
146 0
|
7月前
|
传感器 安全 Android开发
Google发布 Android 12 开发预览版
Google发布 Android 12 开发预览版
84 1
|
3月前
|
API Android开发
Google I/O :Android Jetpack 最新变化(三)UI
Google I/O :Android Jetpack 最新变化(三)UI
49 0
|
6月前
|
JavaScript Java 开发工具
Cocos Creator Android 平台接入 Google Firebase (Analytics功能)(二)
Cocos Creator Android 平台接入 Google Firebase (Analytics功能)
155 0
|
5月前
|
编译器 Android开发
深度解读Android崩溃日志案例分析1:so崩溃
深度解读Android崩溃日志案例分析1:so崩溃
96 1
|
6月前
|
存储 JavaScript Java
Cocos Creator Android 平台 Google 原生登录(二)
Cocos Creator Android 平台 Google 原生登录
124 0