android 中的默认逻辑删除位置

Default tombstones location in android

我正在编写一个应用程序来捕获逻辑删除日志。

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

这条路不是通用的,事实上那不是我很久以来见过的路。通常,当发生墓碑时,您会在 logcat 中看到一行,说明日志的位置。否则你需要四处寻找。

您可以 运行 在 "adb shell" 的“/”目录中使用以下命令来定位特定设备的墓碑位置。

find . |grep tombs

并不是说这在未来不能改变(当然,作为开源,任何供应商都可以根据需要修改它),但是墓碑文件是由 debuggerdengrave_tombstone() 函数在 tombstone.cpp(以前的 tombstone.c)中实现:

这使用宏的硬编码路径:

#define TOMBSTONE_DIR "/data/tombstones"

甚至 Android 的 Java 端也使用硬编码路径:

似乎使用 /data/tombstones 至少可以追溯到 Android 1.6 Donut's debuggerd

如果您还没有 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