Подтвердить что ты не робот

Adb logcat -f ошибка log.txt: не удалось открыть выходной файл: файловая система только для чтения

В окнах (win7), отлаживая реальный телефон через USB, я хочу сбросить журнал logcat в файл на моем ПК. Скорость данных выше, чем можно использовать в затмении; и я хочу весь нефильтрованный журнал.

В соответствии с командами командной строки logcat это должно быть тривиально с

logcat -f logfile.txt

Я использую adb logcat -f logfile.txt в командной строке Windows

но это всегда отвечает

couldn't open output file: Read-only file system

Файловая система не доступна только для чтения. Создание и запись файлов там отлично работает, и грубое перенаправление, такое как adb logcat > logfile.txt, также работает так, как ожидалось. Предоставление всего пути к файлу журнала не имеет значения.

Я хотел бы использовать параметры logcat -n и -r, но для них требуется -f.

Любые предложения?


Заметки. Этот вопрос близок к одному из пользователей Ubuntu, но у него нет ответов, которые мне очень полезны в Windows, и одно предложение, которое я уже пробовал и не работает, Большинство подобных ссылок на SO просто цитируют страницу справки, говоря, что -f filename должно работать.

Вопрос отредактирован, чтобы обновлять его с помощью полезных комментариев и ответов.

4b9b3361

Ответ 1

К сожалению, параметр -f для logcat, по-видимому, способен создавать файлы в файловой системе устройства Android, а не на хосте разработки.

Указав голые имена файлов, вы, скорее всего, попытаетесь создать файл в корневом каталоге устройства, который обычно не записывается.

Если вы хотите создать файл на устройстве, укажите место для записи (соответствующие пути зависят от устройства и сборки, но для получения текущего примера):

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

В качестве дальнейшего объяснения эксперимент показывает, что ввод adb logcat вызывает выполнение программы /system/bin/logcat на устройстве, аналогично тому, что происходит, если вы введете adb shell logcat. ADB может тривиально передавать стандартный или вывод ошибок из этой программы обратно на хост-машину, но нет API-интерфейса на стороне устройства, которое программа, запущенная на устройстве, может использовать, чтобы попросить ADB создавать файлы на машине разработки. Было бы возможно, чтобы операции сохранения в файл и ротация были реализованы в части ADB, которая выполняется на машине разработки, но это не то, как она работает в настоящий момент.

Решение bonitarunner с использованием перенаправления оболочки на машине разработки - это простой ответ. Должна быть доступна программа фильтра на стороне хоста или script, которая будет реализовывать функции ограничения и вращения, аналогичные параметрам -r и -n.

Ответ 2

adb logcat > logfile.txt

adb logcat *:E > logfile.txt

Если вы хотите, чтобы только ошибки были отфильтрованы.

Это работает для меня в MS Windows 7.

Ответ 3

Используйте adb logcat -d > log.txt

Это будет записывать журналы на вашу машину разработки.