adb logcat -f log.txt错误:无法打开输出文件:只读文件系统

27
在Windows(Win7)上,通过USB调试真实手机时,我想将logcat日志转储到我的电脑上的文件中。数据速率超出了eclipse可用的范围;而且我想要整个未经过滤的日志。
根据logcat命令行指令,这应该是微不足道的:logcat -f logfile.txt
我正在使用Windows命令行中的adb logcat -f logfile.txt,但这总是回复:couldn't open output file: Read-only file system
文件系统并非只读。在那里创建和编写文件可以正常工作,粗略的重定向(例如adb logcat > logfile.txt)也按预期工作。提供日志文件的完整路径没有任何区别。
我想利用logcat的-n-r选项,但它们需要使用-f才能起作用。
有任何建议吗?
注:本问题接近于在Ubuntu上提出的一个问题,但对我在Windows上无用的回答,以及我已经尝试过但不起作用的一个建议。大多数类似的参考资料在SO上仅引用帮助页面,说-f filename应该可以工作。
3个回答

39

很遗憾,logcat-f 选项似乎只能在 Android 设备 的文件系统上创建文件,而不能在 开发主机 上创建。

通过指定一个裸文件名,你很可能导致它试图在设备的根目录中创建一个文件,这通常是不可写的。

如果你希望在设备上创建一个文件,请指定一个可写的位置(适当的路径会因设备和版本而异,以下是一个当前的例子):

adb logcat -f /mnt/sdcard/log.txt

进一步解释,实验表明在输入adb logcat命令时,设备上的/system/bin/logcat程序将被执行,类似于输入adb shell logcat的情况。ADB可以轻松地将此程序的标准或错误输出传回主机,但没有设备端API可以让运行在设备上的程序请求ADB在开发计算机上创建文件。在ADB运行的部分中实现保存到文件和旋转操作是可能的,但目前并不是这样工作的。

bonitarunner使用开发计算机上的shell重定向的解决方案是一个简单的答案。应该可以想出一个主机端过滤程序或脚本,它将实现类似于-r-n选项的限制和旋转功能。


32

使用adb logcat -d > log.txt

这将把日志写入到您的开发机器上。


好的,我一直在寻找-d选项,但在参考文档中错过了它。如果其他人也想知道,它会导致adb写入输出并停止侦听logcat消息,而不是让提示符“挂起”。 - blizz

23
adb logcat > logfile.txt

adb logcat *:E > logfile.txt

如果你只想筛选错误。

这在我使用的 MS Windows 7 上有效。


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