我正在精彩的系统库世界中写一些东西,但我在 libc 中遇到崩溃,我的库显然传递了错误的值。
有什么方法可以让 Android 为崩溃的应用程序生成核心转储,以便分解应用程序堆栈?
特别是,如果有帮助的话,我正在导致 system_server 崩溃。
编辑:我的问题的要点是:当应用程序在像 libc 这样的库中崩溃时,获取输出的墓碑会显示 libc 中的堆栈跟踪。如果我有一个完整的堆栈跟踪,那么我就可以调试整个应用程序。
最佳答案
我假设您正在编写 NDK (C/C++) 代码?如果是这样,请检查您的 logcat 输出以获取堆栈跟踪。如果你有相应的调试so文件,你可以通过堆栈跟踪工具运行它,例如:http://code.google.com/p/android-ndk-stacktrace-analyzer/wiki/Usage .
logcat 跟踪保存在墓碑中,请参阅此帖子:http://crazydaks.com/debugging-in-android-with-tombstones.html .
对于 libc.so 中的崩溃,您可以尝试针对 so 运行 arm-eabi-objdump 和 arm-eabi-addr2line,并比较地址以查看崩溃发生的位置。
关于android - 如何让 android 打印出崩溃系统应用程序的核心转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448804/