gpt4 book ai didi

android - 是否可以从 Android 应用程序的 C++ 回溯中找到函数名称?

转载 作者:行者123 更新时间:2023-12-02 06:39:53 24 4
gpt4 key购买 nike

我正在调试中测试我的应用程序,它有很多 C++。即使它是在调试中编译的,并且 C++ 代码是由我自己的应用程序编译的(因此也是在 Debug模式下编译的),但我得到的崩溃回溯如下:

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
我假设在发布和 Debug模式下我都得到相同的回溯。因此,如果应用程序的某些用户向我发送了此回溯(我相信它是在应用程序崩溃时通过 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文件,所以我认为这是正确的地方。但是,我得到了与以前相同的输出:没有回溯函数的名称。

最佳答案

release and debug mode I get the same backtrace


如果是 heisenbug 或堆栈粉碎错误,则不正确,优化设置可以改变 UB 的行为方式,还有一些设置有助于消除这种噪音。
事后分析: https://source.android.com/devices/tech/debug

关于android - 是否可以从 Android 应用程序的 C++ 回溯中找到函数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64037057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com