Недавнее исследование вундеркиндов время мастер - классы Android разработки рекомендуются Breakpad библиотеки с открытым исходным кодом для сбора аварии родной учителя 1. Почему я должен использовать Google Breakpad?
Мы в процессе разработки, Android JNI проблема слоя Краш или мы ссылаемся на третью сторону .so библиотеки ошибки файла, хлопотная проблема. Java слой условно говоря, из-за распада C / C ++ вызвано не исключение Strace выводится в виде Java не суммируется информация, проблема позиционирования также более трудным делом.
Я не знаю , студенты JNI могут нажать на следующий Android студии JNI примере развития при том понимании.
Google Breakpad является полным набором инструментов, от аварии аварии , чтобы захватить дамп, предоставляет соответствующие инструменты. Он записывает время аварии .dump файла, будь мы на месте или отправляются на сервер, вы можете использовать соответствующие инструменты , чтобы помочь нам найти файл разбор .dump C и C ++ стек.
Однако, поскольку Google Breakpad является C / C ++ написано, многие Android разработчиков и студенты не имеют никакого опыта в этой области, хотел бы использовать и не использовать. Кроме того, Google Breakpad Github в приведенном выше описании, подсчитано, что многие люди смотрели, чтобы заставить невежда:
![](https://img2018.cnblogs.com/blog/916005/201908/916005-20190803121536955-325982961.png)
Практика:
接着就 run,在手机上跑起来了,点击 CRASH,程序崩溃,我进去 sdcard 中看到了 crashDump 目录,成功生成了crash 文件。
接着运行: ./tools/mac/minidump_stackwalk crashDump/***.dmp >crashLog.txt ,结果又报错了:
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
./configure
make
对源码完成了编译,minidump_stackwalk这个文件在src/processor/目录中,然后运行:
./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