问题描述
我正在调试我的应用程序,该应用程序具有很多C ++。即使它是在调试中编译的,并且C ++代码是由我自己的应用程序编译的(因此也在调试模式下编译),但我还是遇到了如下的崩溃回溯:
09-23 19:16:32.672 14123 14123 F DEBUG : Build fingerprint: 'motorola/griffin/griffin:8.0.0/OPL27.76-71-2-3/3:user/release-keys'
09-23 19:16:32.672 14123 14123 F DEBUG : Revision: 'p3b0'
09-23 19:16:32.672 14123 14123 F DEBUG : ABI: 'arm64'
09-23 19:16:32.672 14123 14123 F DEBUG : pid: 14078,tid: 14078,name: my_Flutter_app >>> com.sergio_Lever.my_Flutter_app <<<
09-23 19:16:32.672 14123 14123 F DEBUG : signal 6 (SIGABRT),code -6 (SI_TKILL),fault addr --------
09-23 19:16:32.675 14123 14123 F DEBUG : Abort message: 'terminating with uncaught exception of type std::bad_optional_access: bad_optional_access'
09-23 19:16:32.675 14123 14123 F DEBUG : x0 0000000000000000 x1 00000000000036fe x2 0000000000000006 x3 0000000000000008
09-23 19:16:32.675 14123 14123 F DEBUG : x4 fefeff7ee760d21f x5 fefeff7ee760d21f x6 fefeff7ee760d21f x7 7f7f7f7fff7fff7f
09-23 19:16:32.675 14123 14123 F DEBUG : x8 0000000000000083 x9 18e2b086a928bab4 x10 0000000000000000 x11 0000000000000001
09-23 19:16:32.675 14123 14123 F DEBUG : x12 ffffffffffffffff x13 0000000000000001 x14 0024287419403a06 x15 0000260af954a2fc
09-23 19:16:32.675 14123 14123 F DEBUG : x16 0000007fb44632f8 x17 0000007fb44049d4 x18 0000007fe861da5c x19 00000000000036fe
09-23 19:16:32.675 14123 14123 F DEBUG : x20 00000000000036fe x21 0000007fe861d828 x22 ffffff80ffffffc8 x23 0000007fe861d8e0
09-23 19:16:32.676 14123 14123 F DEBUG : x24 0000007fe861d7c0 x25 0000007fe861d800 x26 0000000000000000 x27 0000000000000001
09-23 19:16:32.676 14123 14123 F DEBUG : x28 0000000000000001 x29 0000007fe861d730 x30 0000007fb43b8d24
09-23 19:16:32.676 14123 14123 F DEBUG : sp 0000007fe861d6f0 pc 0000007fb44049dc pstate 0000000060000000
09-23 19:16:32.682 14123 14123 F DEBUG :
09-23 19:16:32.682 14123 14123 F DEBUG : backtrace:
09-23 19:16:32.682 14123 14123 F DEBUG : #00 pc 00000000000699dc /system/lib64/libc.so (tgkill+8)
09-23 19:16:32.682 14123 14123 F DEBUG : #01 pc 000000000001dd20 /system/lib64/libc.so (abort+88)
09-23 19:16:32.682 14123 14123 F DEBUG : #02 pc 000000000009fffc /data/app/com.sergio_Lever.my_Flutter_app-05UKts6YyVXBufMPQhp4Ew==/base.apk (offset 0x3853000)
09-23 19:16:32.682 14123 14123 F DEBUG : #03 pc 00000000000a0154 /data/app/com.sergio_Lever.my_Flutter_app-05UKts6YyVXBufMPQhp4Ew==/base.apk (offset 0x3853000)
09-23 19:16:32.682 14123 14123 F DEBUG : #04 pc 000000000009d044 /data/app/com.sergio_Lever.my_Flutter_app-05UKts6YyVXBufMPQhp4Ew==/base.apk (offset 0x3853000)
09-23 19:16:32.682 14123 14123 F DEBUG : #05 pc 000000000009c914 /data/app/com.sergio_Lever.my_Flutter_app-05UKts6YyVXBufMPQhp4Ew==/base.apk (offset 0x3853000)
09-23 19:16:32.682 14123 14123 F DEBUG : #06 pc 000000000009c870 /data/app/com.sergio_Lever.my_Flutter_app-05UKts6YyVXBufMPQhp4Ew==/base.apk (offset 0x3853000)
09-23 19:16:32.682 14123 14123 F DEBUG : #07 pc 00000000007a25d0 /data/app/com.sergio_Lever.my_Flutter_app-05UKts6YyVXBufMPQhp4Ew==/base.apk (offset 0xaef5000)
09-23 19:16:32.684 14123 14123 F DEBUG : #08 pc 00000000007a0ad4 /data/app/com.sergio_Lever.my_Flutter_app-05UKts6YyVXBufMPQhp4Ew==/base.apk (offset 0xaef5000)
09-23 19:16:32.684 14123 14123 F DEBUG : #09 pc 00000000007a07e8 /data/app/com.sergio_Lever.my_Flutter_app-05UKts6YyVXBufMPQhp4Ew==/base.apk (offset 0xaef5000)
09-23 19:16:32.684 14123 14123 F DEBUG : #10 pc 00000000007a0b50 /data/app/com.sergio_Lever.my_Flutter_app-05UKts6YyVXBufMPQhp4Ew==/base.apk (offset 0xaef5000)
09-23 19:16:32.684 14123 14123 F DEBUG : #11 pc 00000000007a1890 /data/app/com.sergio_Lever.my_Flutter_app-05UKts6YyVXBufMPQhp4Ew==/base.apk (offset 0xaef5000)
09-23 19:16:32.684 14123 14123 F DEBUG : #12 pc 000000000000c46c /data/app/com.sergio_Lever.my_Flutter_app-05UKts6YyVXBufMPQhp4Ew==/oat/arm64/base.odex (offset 0xa000)
09-23 19:16:33.509 1136 1136 E /system/bin/tombstoned: Tombstone written to: /data/tombstones//tombstone_00
我想在发布和调试模式下我都会得到相同的回溯。因此,如果该应用程序的某些用户向我发送了该回溯跟踪信息(我相信是在应用程序崩溃时通过google play发送反馈选项发送的),我是否可以找到这些函数的实际名称?也许正在看偏移量?
如果可能,为什么logcat至少在我的应用程序调试版本中不会在回溯中显示功能的真实名称?
更新:
我发现了ndk-stack实用程序,我尝试过:
adb logcat | $ANDROID_NDK_HOME/ndk-stack -sym $PWD/android/app/.cxx/cmake/debug/armeabi-v7a/
Android NDK网站推荐
adb logcat | $NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi-v7a
但是我没有找到$PROJECT_PATH/obj/local/armeabi-v7a
ndk-stack
工具为我提供了以下输出:
Build fingerprint: 'motorola/griffin/griffin:8.0.0/OPL27.76-71-2-3/3:user/release-keys'
#00 0x00000000007b89b4 /data/app/com.sergio.my_Flutter_app-P3kaX9v7DTNaKtQvm2Eotg==/base.apk (offset 0x4716000)
#01 0x00000000007b9ca0 /data/app/com.sergio.my_Flutter_app-P3kaX9v7DTNaKtQvm2Eotg==/base.apk (offset 0x4716000)
#02 0x00000000007bb03c /data/app/com.sergio.my_Flutter_app-P3kaX9v7DTNaKtQvm2Eotg==/base.apk (offset 0x4716000)
#03 0x00000000007baf78 /data/app/com.sergio.my_Flutter_app-P3kaX9v7DTNaKtQvm2Eotg==/base.apk (offset 0x4716000)
#04 0x00000000007bac18 /data/app/com.sergio.my_Flutter_app-P3kaX9v7DTNaKtQvm2Eotg==/base.apk (offset 0x4716000)
#05 0x000000000006637c /system/lib64/libc.so (_ZL15__pthread_startPv+36)
#06 0x000000000001f178 /system/lib64/libc.so (__start_thread+68)
Crash dump is completed
可能的原因:$PWD/android/app/.cxx/cmake/debug/armeabi-v7a/
中没有.o或.a文件
我也尝试过
adb logcat | $ANDROID_NDK_HOME/ndk-stack -sym $PWD/build/app/intermediates/merged_native_libs/debug/out/lib/armeabi-v7a
在该文件夹中,确实存在我的.so
文件,所以我认为这是正确的位置。但是,我得到的输出与以前相同:没有回溯功能的名称。