android 中的默认逻辑删除位置
Default tombstones location in android
我正在编写一个应用程序来捕获逻辑删除日志。
如何在任何 Android 设备中获取逻辑删除日志的默认位置?
即使墓碑日志还不可用,当发生任何崩溃或其他事情时,它们会存储在哪里?
据我所知,这些日志保存在“/data/tombstones/”中,但这条路径是否适用于所有设备?
我是否需要在代码中动态地从 "adb shell getprop" 等读取一些 属性?
这条路不是通用的,事实上那不是我很久以来见过的路。通常,当发生墓碑时,您会在 logcat 中看到一行,说明日志的位置。否则你需要四处寻找。
您可以 运行 在 "adb shell" 的“/”目录中使用以下命令来定位特定设备的墓碑位置。
find . |grep tombs
并不是说这在未来不能改变(当然,作为开源,任何供应商都可以根据需要修改它),但是墓碑文件是由 debuggerd
在 engrave_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 文件中,您将拥有分析所需的一切。
为了拆卸墓碑:
获取AOSP源代码,按照https://source.android.com/setup/start的说明,直到lunch
命令。
运行命令(用兴趣文件替换tombstone_01):
disassemble_tombstone.py ./bugreport/FS/data/tombstones/tombstone_01
中的 bugreport.zip
我正在编写一个应用程序来捕获逻辑删除日志。
如何在任何 Android 设备中获取逻辑删除日志的默认位置? 即使墓碑日志还不可用,当发生任何崩溃或其他事情时,它们会存储在哪里? 据我所知,这些日志保存在“/data/tombstones/”中,但这条路径是否适用于所有设备? 我是否需要在代码中动态地从 "adb shell getprop" 等读取一些 属性?
这条路不是通用的,事实上那不是我很久以来见过的路。通常,当发生墓碑时,您会在 logcat 中看到一行,说明日志的位置。否则你需要四处寻找。
您可以 运行 在 "adb shell" 的“/”目录中使用以下命令来定位特定设备的墓碑位置。
find . |grep tombs
并不是说这在未来不能改变(当然,作为开源,任何供应商都可以根据需要修改它),但是墓碑文件是由 debuggerd
在 engrave_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 文件中,您将拥有分析所需的一切。
为了拆卸墓碑:
获取AOSP源代码,按照https://source.android.com/setup/start的说明,直到
lunch
命令。运行命令(用兴趣文件替换tombstone_01):
disassemble_tombstone.py ./bugreport/FS/data/tombstones/tombstone_01
中的 bugreport.zip