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

首先得到代码

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

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

编译Tool:

cd breakpadchmod +x configure./configuremake

编译Android静态库:

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

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

cd breakpadcd android/sample_appndk-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

更多相关文章

  1. Android之NDK开发
  2. Android中webview跟JAVASCRIPT中的交互
  3. Android(安卓)Makefile中是 如何识别 TARGET_PRODUCT 的
  4. -Android各版本系统源代码下载
  5. Android(安卓)Studio 常用快捷键
  6. android_防止被反编译 混淆
  7. 设置TextView文字居中,代码实现android:layout_gravity
  8. Android(安卓)Studio 如何引用aar包
  9. Android中webview跟JAVASCRIPT中的交互

随机推荐

  1. Android(安卓)- ToDoList 详解
  2. Android(安卓)实现文件分享功能(共享多个
  3. Android接收和发送短信的实现代码
  4. Android(安卓)ScrollView嵌套ListView或
  5. android 按两次返回键退出程序
  6. Android技术栈总结
  7. Androng,一个针对Android的Pong克隆
  8. Android(安卓)Studio logcat 设置 缓存大
  9. android源码中的c c++库( android中动态和
  10. EditText使用详解-包含很多教程上看不到