web-dev-qa-db-ja.com

adb logcat -f log.txtエラー:出力ファイルを開けませんでした:読み取り専用ファイルシステム

Windows(win7)で、USBを介して実際の電話をデバッグするlogcatログをPC上のファイルにダンプしたい。データの速度は、Eclipseで使用できる速度を超えています。フィルタリングされていないログ全体が必要です。

logcatコマンドラインの指示 によると、これは簡単なはずです

_logcat -f logfile.txt_

私はWindowsコマンドラインで_adb logcat -f logfile.txt_を使用しています

しかし、これは常にで応答します

_couldn't open output file: Read-only file system_

ファイルシステムはnot読み取り専用です。ファイルの作成と書き込みは正常に機能し、_adb logcat > logfile.txt_などの粗いリダイレクトも期待どおりに機能します。ログファイルへのパス全体を指定しても違いはありません。

Logcatの_-n_および_-r_オプションを使用したいのですが、動作させるには_-f_が必要です。

助言がありますか?


ノート。この質問は buntuで尋ねられたもの に近いですが、Windowsで私に役立つ答えはありません。また、すでに試したがうまくいかないという提案もあります。 SOのほとんどの同様の参照は、単にヘルプページを引用し、_-f filename_が機能するはずです。

有用なコメントと回答で最新の状態に保つために編集された質問。

20
Cheeseminer

残念ながら、logcatの_-f_オプションは、Androidデバイスのファイルシステムにしかファイルを作成できないようです開発ホストではありません。

裸のファイル名を指定すると、通常は書き込み可能ではないデバイスのルートディレクトリにファイルを作成しようとする可能性があります。

デバイス上にファイルを作成する場合は、書き込み可能な場所を指定します(適切なパスはデバイスとビルドによって異なりますが、現在の例を使用します)。

_adb logcat -f /mnt/sdcard/log.txt
_

さらに説明すると、実験では、_adb logcat_を入力すると、_/system/bin/logcat_と入力した場合と同様に、デバイス上の_adb Shell logcat_プログラムが実行されることが示されています。 ADBはこのプログラムから標準出力またはエラー出力をホストマシンに簡単に戻すことができますが、デバイスで実行されているプログラムがADBに開発マシンでファイルを作成するよう要求するために使用できるデバイス側APIはありません。ファイルへの保存およびローテーション操作は、開発マシン上で実行されるADBの一部に実装することは可能ですが、それは現在の動作ではありません。

開発マシンでシェルリダイレクトを使用するbonitarunnerのソリューションは簡単な答えです。 _-r_および_-n_オプションと同様の制限および回転機能を実装するホスト側フィルタープログラムまたはスクリプトを考え出すことができるはずです。

30
Chris Stratton
adb logcat > logfile.txt

adb logcat *:E > logfile.txt

エラーのみをフィルタリングする場合。

これはMS Windows 7で動作します。

20
bonitarunner

使用する adb logcat -d > log.txt

これにより、開発マシンにログが書き込まれます。

19
flameshimmer