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
должно работать.
Вопрос отредактирован, чтобы обновлять его с помощью полезных комментариев и ответов.
Ответы
Ответ 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
Это будет записывать журналы на вашу машину разработки.