<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">我们可以利用ndk提供的工具, 对crash log进行分析</span>
比如, 我们有一次的crash log如下
</pre><pre name="code" class="csharp">04-06 17:05:49.458 I/DEBUG ( 2408): backtrace:
04-06 17:05:49.458 I/DEBUG ( 2408): #00 pc 002aba18 /data/app-lib/com.netjoy.iblis-1/libmono.so
04-06 17:05:49.458 I/DEBUG ( 2408): #01 pc 002abb54 /data/app-lib/com.netjoy.iblis-1/libmono.so
04-06 17:05:49.458 I/DEBUG ( 2408): #02 pc 002abbf0 /data/app-lib/com.netjoy.iblis-1/libmono.so
04-06 17:05:49.458 I/DEBUG ( 2408): #03 pc 0022b374 /data/app-lib/com.netjoy.iblis-1/libmono.so (mono_custom_attrs_from_class+320)
04-06 17:05:49.458 I/DEBUG ( 2408): #04 pc 0022bba0 /data/app-lib/com.netjoy.iblis-1/libmono.so (mono_reflection_get_custom_attrs_info+92)
04-06 17:05:49.458 I/DEBUG ( 2408): #05 pc 00192678 /data/app-lib/com.netjoy.iblis-1/libmono.so
04-06 17:05:49.458 I/DEBUG ( 2408): #06 pc 00008754 <unknown>
我们利用ndk提供的工具进行分析
cd android/android-ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin
./ arm-linux-androideabi-addr2line -C -f -e UnityPlayerNativeActivity/lib/armeabi-v7a/libmono.so 0x00192678
结果发现
mono_gc_is_finalizer_thread
??:?
我们同样可以使用快速崩溃信息抽取
./ndk-stack -sym NJ_Android/obj/ -dump 24371.log
这样会从数万条log中快速打印出call stack的崩溃堆栈信息.