Android中默认墓碑文件的位置

13

我正在编写一个应用程序来捕获墓碑日志。

如何在任何Android设备中获取墓碑日志的默认位置? 即使墓碑日志尚不可用,当发生任何崩溃或其他情况时,它们会存储在哪里? 据我所知,这些日志保存在“/data/tombstones/”中,但此路径是否适用于所有设备? 在代码中,我需要动态地从“adb shell getprop”等读取某些属性吗?

4个回答

13

如果您的设备尚未取得 root 权限,您应该使用 bugreport adb 命令:

adb bugreport ./bugreport.zip

在zip文件中,您将拥有分析所需的一切。

为了解开墓碑:

  1. 获取AOSP源代码并按照https://source.android.com/setup/start的说明执行到lunch命令。

  2. 运行以下命令(将tombstone_01替换为相关的文件):

disassemble_tombstone.py ./bugreport/FS/data/tombstones/tombstone_01

https://source.android.com/devices/tech/debug中有更多工具用于调试bugreport.zip文件。


此外,如果设备的Android版本低于7.0,只能提供纯文本格式的错误报告转储。因此,您的第一个命令将变成类似于adb bugreport > ./bugreport.txt的形式。 - Pyr3z

9

并不是说这在未来不能改变(当然,作为开源软件,任何供应商都可以选择修改此内容),但墓碑文件是由 debuggerd 在实现了 tombstone.cpp 中的 engrave_tombstone() 函数中编写的(以前是 tombstone.c):

这使用了一个宏来硬编码路径:
#define TOMBSTONE_DIR "/data/tombstones"

即使是 Android 的 Java 方面也使用硬编码路径:

看起来使用 /data/tombstones 至少可以追溯到 Android 1.6 Donut的debuggerd


3
您可以在"adb shell"中从"/"目录运行以下命令,以查找特定设备的tombstones位置。
find . |grep tombs

-3

路径并不是通用的,实际上我很久以前就没有见过这样的路径了。通常当出现墓碑错误时,你会在logcat中得到一行指示日志位置的信息。否则你需要自己查找。


2
嗨,你能列出一些你遇到的其他变量吗? - Eugen Pechanec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接