android - 如何让 android 打印出崩溃系统应用程序的核心转储?

标签 android linux-kernel kernel

我正在精彩的系统库世界中写一些东西,但我在 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/

相关文章:

c - Linux内核模块编译

java - JSONObject.toString : how NOT to escape slashes

linux - 在 Linux 内核配置上执行 insmod 的选项有哪些?

linux-kernel - Linux 内核 Controller 作为 SPI 从设备

linux - deb 安装内核镜像时出错

c++ - 在 Linsched 中使用 task_struct

linux - 来自 task_struct 的完整进程名称

android - 如何在 Android 中使用 textview 显示颠倒的文本?

android - 未安装应用程序时的 Branch.io 深度链接 - 避免网页

https 方案的 Android Intent 过滤器不起作用