【问题标题】:how to access android files /data/anr/traces.txt and /data/tombstones/tombstones [duplicate]如何访问android文件/data/anr/traces.txt和/data/tombstones/tombstones [重复]
【发布时间】:2019-07-30 19:51:12
【问题描述】:

我正在编写一个用于报告崩溃和相关日志的应用程序。 因此,我试图从我的应用程序中访问 traces.txt 和墓碑,但出现错误:

03-25 09:48:46.220 W/System.err(10250): java.io.FileNotFoundException: /data/tombstone/tombstone_00 (Permission denied)

我可以访问 traces.txt,但不能访问墓碑。

【问题讨论】:

标签: android tombstone


【解决方案1】:

您可以使用位于 your_sd_root_dir/tools 中的 adb 工具。像这样使用它

./adb pull path_to_file location_to_save

【讨论】:

  • 感谢 Mojo,但我想从我的 android 应用程序中完成。
  • 我无法使用此方法提取 /data/tombstones 的内容。 adb 说权限被拒绝
  • 这不是只能在模拟器中使用吗?
  • 它也应该以 root 身份工作。
【解决方案2】:

您可以在开发人员选项中获取完整的错误报告(请参阅Android docs)。在错误报告的 ZIP 文件中,您可以在 /FS/data 中找到 tombstonesanr 文件夹。

这将适用于有根和无根设备。

【讨论】:

  • unroot 设备最终通过adb bugreport 获得了 /data/tombstones/。 // android 10. // BTW adb pulladb shell 没有权限。
  • adb bugreport 是唯一适用于无根 Android 10+ 版本手机的方法。使用 adb pull 或 cp 到 /sdcard/ 文件夹时会显示权限拒绝。
【解决方案3】:

如果您收到“权限被拒绝”,您可以这样做:

adb shell "cp /data/anr/traces.txt /storage/extSdCard/" 
adb pull /storage/extSdCard/traces.txt

【讨论】:

  • 当我执行 adb shell "cp /data/anr/traces.txt /storage/extSdCard/" 时,我得到 No such file or directory 并且我在 adb shell "cp /data/tombstones/traces.txt /storage/extSdCard/" 上得到权限被拒绝
  • @mundella 找到一个适合你的中间目录——我使用/sdcard/,然后重命名文件,所以我的脚本看起来像:adb shell "cp /data/anr/traces.txt /sdcard/anr_trace.txt" ; adb pull /sdcard/anr_trace.txt
  • 我收到一个错误:permission denied
  • 仍然获得权限被拒绝
【解决方案4】:

注意:这仅适用于 android 模拟器和 root 的 android 设备。

您可以先检查文件是否已创建。你可以通过进入来做到这一点

DDMS -> File Explorer -> data -> data -> (Your Package) -> files -> (Your File)

DDMS 位于 Eclipse 的右上角。如果文件不存在于上述路径中,则它没有正确创建,但如果它仍然存在,则在访问文件时相应地更改路径,例如。 /data/data/(Your Package)/traces.txt

您也可以将该 traces.txt 文件拉到您的桌面上。下拉选项在 DDMS 下方的顶栏上给出。

【讨论】:

  • 感谢 Harshad,但我想从我的 android 应用程序中完成。
  • 你能在上面提到的位置看到traces.txt吗?如果您能够看到它,那么我建议您更正您访问它的路径。
  • 嗨,Harshad,traces.txt 有权限 -rw-rw-rw 所以我可以访问这个文件 :) ,但是我现在如何访问 /data/tombstones/
  • 我看到 logcat 消息:堆栈跟踪写入:/data/anr/traces.txt,但 /data 目录本身在文件资源管理器视图中似乎是空的。有什么想法吗?
【解决方案5】:

这是为我做的:adb pull "/data/anr/traces.txt"

【讨论】:

  • 确认在 S8+ 上无需 root 即可工作。谢谢!
【解决方案6】:
adb shell "cd /data/anr && cat traces.txt" > anr.txt

这将在您当前设置目录的 anr.txt 中复制 traces.txt

【讨论】:

  • 这个很有用。
  • 仍然得到permission denied
  • 任何人都可以在这个相关的question 中帮助我,因为没有可用的答案可以解决
【解决方案7】:

你应该可以通过 DropBoxManager 类获取你需要的文件 http://developer.android.com/reference/android/os/DropBoxManager.html

墓碑文件也被复制到保管箱(至少在模拟器上)

【讨论】:

  • 将是 getNextEntry 中 tag 和 msec 的值,以获取 /data/anr/traces.txt 的内容?
  • 值类似于 getNextEntry("SYSTEM_TOMBSTONE", before)。不幸的是,除非您使用系统密钥签名,否则这会引发异常。
【解决方案8】:

adb shell data/system/Dropbox 然后使用 ls 查看 Dropbox iinside dropbox 里面生成的文件,你会得到 crash,anr 和 traces 文件

如果您想访问它们,请创建文件夹并在该文件夹中打开 adb 并使用以下命令 adb pull data/system/dropbox

【讨论】:

    猜你喜欢
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多