Запомните раз собранный APP нативный коллапс JNI под информацией разработки примеров Android студии

Недавнее исследование  вундеркиндов время мастер - классы 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 в приведенном выше описании, подсчитано, что многие люди смотрели, чтобы заставить невежда:

 
  На самом деле, это означает, что Google Breakpad нужно компилировать исходный код для создания файлов minidump_stackwalk для различных платформ, таких как Windows, Mac, Linux, и так далее. Конечно, я также активизировал яму, обратитесь к этому описанию, после нескольких попыток в Windows, не удались; Позже, использование VMware Workstation Pro успешно установлен скомпилирован под Ubuntu 18.10 вышло.

Практика:

首先,按照github工程的ReadMe流程走一遍,碰到了2个提示,让我安装NDK和CMAKE,我根据提示安装后编译直接就成功了;

接着就 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
评论中老师说到缺少必要的动态链接库导致的,建议我们去编译breakpad源码;
我自己从 github 上下载了 breakpad 的源码。但是mac 下编译说报错:
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 
其实我没有去下载xcode,电脑内存实在是不够,就不想下载了。主要是知道这个过程和原理
 

рекомендация

отwww.cnblogs.com/huansky/p/11294020.html