我正在编写一个用于报告崩溃和相关日志的应用程序。因此,我正在尝试从我的应用程序中访问 traces.txt 和 tombstones 文件,但是我得到了一个错误:
03-25 09:48:46.220 W/System.err(10250): java.io.FileNotFoundException: /data/tombstone/tombstone_00 (Permission denied)
我可以访问 traces.txt ,但无法访问墓碑。
我正在编写一个用于报告崩溃和相关日志的应用程序。因此,我正在尝试从我的应用程序中访问 traces.txt 和 tombstones 文件,但是我得到了一个错误:
03-25 09:48:46.220 W/System.err(10250): java.io.FileNotFoundException: /data/tombstone/tombstone_00 (Permission denied)
我可以访问 traces.txt ,但无法访问墓碑。
您可以使用位于您的sd根目录下的tools文件夹中的adb工具。使用方法如下:
./adb pull path_to_file location_to_save
您可以在开发者选项中捕获完整的错误报告(请参见Android文档)。在错误报告的ZIP文件中,您可以在/FS/data
文件夹中找到tombstones
和anr
文件夹。
此方法适用于已经root和未root的设备。
adb bugreport
获取 /data/tombstones/
目录。// 适用于Android 10。
// 另外,adb pull
或者adb shell
需要权限。 - yurenchen如果你收到 "permission denied" 的错误提示,你可以这样做:
adb shell "cp /data/anr/traces.txt /storage/extSdCard/"
adb pull /storage/extSdCard/traces.txt
adb shell "cp /data/anr/traces.txt /storage/extSdCard/"
时,我会收到“没有这样的文件或目录”的错误提示。而在 adb shell 中执行 "cp /data/tombstones/traces.txt /storage/extSdCard/"
则会提示权限被拒绝。 - Coder/sdcard/
,并将文件重新命名,这样我的脚本看起来像是这样:adb shell "cp /data/anr/traces.txt /sdcard/anr_trace.txt" ; adb pull /sdcard/anr_trace.txt
。 - benkc权限被拒绝
。 - IgorGanapolsky注意:此方法仅适用于安卓模拟器和已经root的安卓设备。
你可以先检查文件是否被创建。你可以通过以下方式进行检查:
DDMS -> 文件浏览器 -> data -> data -> (你的包名) -> files -> (你的文件名)
DDMS在eclipse右上角。如果文件不存在于上述路径中,则未正确创建,但如果它仍然存在,则在访问时相应更改你的文件路径,例如:/data/data/(你的包名)/traces.txt
你还可以将traces.txt文件拉到桌面上。在DDMS下方的顶部菜单栏上提供了拉取选项。
这是解决问题的方法:使用adb pull命令将"/data/anr/traces.txt"文件拉取到本地。
adb shell "cd /data/anr && cat traces.txt" > anr.txt
使用 Adb shell data/system/Dropbox 命令,然后使用 ls 命令查看在 Dropbox 内生成的文件,其中包括 crashes、anr 和 traces 文件。
如果您想要访问这些文件,请创建一个文件夹并打开该文件夹内的 adb,然后使用以下命令:adb pull data/system/dropbox。
您可以通过DropBoxManager类http://developer.android.com/reference/android/os/DropBoxManager.html获取所需的文件。
在模拟器上,tombstone文件也会被复制到dropbox中。