当我的 Android 应用程序崩溃(或遇到断言)时,我得到的回溯行数永远不会超过四行。搜索类似问题时,我只发现一两个地方提到了这一点,并且库存响应是:“确保它是一个调试版本”和“你可能有堆栈损坏”。我已经看到许多地方发生了许多崩溃,这些地方的框架看起来很准确,而且没有损坏的证据。
这是在调试构建中断言失败后从“adb logcat”中摘录的典型摘录:
I/DEBUG ( 187): d28 3f824fc6ced25306 d29 3fabdfebb8fe14dc
I/DEBUG ( 187): d30 fff0000000000000 d31 fffffffeffffffd2
I/DEBUG ( 187): scr 88000010
I/DEBUG ( 187):
I/DEBUG ( 187): backtrace:
I/DEBUG ( 187): #00 pc 00018516 /system/lib/libc.so
I/DEBUG ( 187): #01 pc 0000dc44 /system/lib/libc.so (abort+4)
I/DEBUG ( 187): #02 pc 0000168d /system/lib/liblog.so (__android_log_assert+88)
I/DEBUG ( 187): #03 pc 00170bcc /data/data/com.jsam.crag/lib/libmain.so (sim::TouchObserverController::HandleEvent(SDL_Event const&)+340)
I/DEBUG ( 187):
I/DEBUG ( 187): stack:
I/DEBUG ( 187): 6f4be770 6f4be76c [stack:17025]
I/DEBUG ( 187): 6f4be774 00000000
I/DEBUG ( 187): 6f4be778 00000000
如您所见,大多数可用的回溯甚至不在我自己的代码中。我正在开发具有开箱即用操作系统的开发人员版 HTC One,使用 NDK 的 8e 版并针对 android-10 构建,尽管 android-15 也不例外。我正在使用工具链 v4.7,gnustl_static STL 和我的 C++ 标志是:
-std=c++11 -g -pthread -DPROFILE -D__STRICT_ANSI__ -DdSINGLE -Wall -Wextra -Wfatal-errors -fno-rtti -fno-exceptions
我将如何获得更长的(最好是完整的)回溯?