标签:eem man run linu ace post auto cpu asi
最近在学习 极客时间Android开发高手课 老师推荐了Breakpad开源库来采集native 的crash1.为什么要使用Google Breakpad?
我们在开发过程中,Android JNI层Crash问题或者我们引用的第三方.so库文件报错,都是一个比较头疼的问题。相对Java层来说,由于c / c ++造成的崩溃没有输出如同Java的异常Strace堆栈信息,所以定位问题也是个比较艰难的事情。
不知道 JNI 的同学可以点击 Android studio 下 JNI 开发实例 了解下。
Google Breakpad是一套完整的工具集,从Crash的捕获到Crash的dump,都提供了相对应的工具。它记录了崩溃时的.dump文件,无论我们是在本地或者发送到服务器端,都可以用相对应的工具来解析.dump文件帮助我们查找C和C ++堆栈踪迹。
但是,由于Google Breakpad是C / C ++编写的,很多Android开发同学并没有这方面的经验,想用而却不能用。而且,Google Breakpad在Github上面的说明,估计很多人看了就懵逼了:
dyld: Symbol not found: __ZTTNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE Referenced from: /Users/james/Documents/projec/breakpad/Chapter01/./tools/mac/minidump_stackwalk Expected in: /usr/lib/libstdc++.6.dylib in /Users/james/Documents/projec/breakpad/Chapter01/./tools/mac/minidump_stackwalk Abort trap: 6
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools),
missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun configure:3506: $? = 1
解决办法:安装mac的命令行工具CommandLineTools
xcode-select --install
./minidump_stackwalk crashDump/***.dmp >crashLog.txt
Operating system: Android 0.0.0 Linux 3.18.31-perf-g4fd2040 #1 SMP PREEMPT Tue Dec 4 03:15:19 WIB 2018 aarch64 CPU: arm64 8 CPUs GPU: UNKNOWN Crash reason: SIGSEGV /SEGV_MAPERR Crash address: 0x0 Process uptime: not available Thread 0 (crashed) 0 libcrash-lib.so + 0x600 x0 = 0x0000007f7583e300 x1 = 0x0000007ff1b88ad4 x2 = 0x0000007f792e3000 x3 = 0x0000000001e5a140
标签:eem man run linu ace post auto cpu asi
原文地址:https://www.cnblogs.com/huansky/p/11294020.html