web-dev-qa-db-fra.com

adb logcat -f erreur log.txt: impossible d'ouvrir le fichier de sortie: système de fichiers en lecture seule

Sous Windows (win7), en déboguant un vrai téléphone via USB, je veux vider le journal logcat dans un fichier sur mon PC. Le taux de données dépasse ce qui est utilisable dans Eclipse; et je veux tout le journal non filtré.

Selon les instructions de ligne de commande logcat cela devrait être trivial avec

logcat -f logfile.txt

J'utilise adb logcat -f logfile.txt Sur la ligne de commande Windows

mais cela répond toujours par

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

Le système de fichiers n'est pas en lecture seule. La création et l'écriture de fichiers fonctionnent correctement et une redirection grossière telle que adb logcat > logfile.txt Fonctionne également comme prévu. Fournir le chemin d'accès complet au fichier journal ne fait aucune différence.

J'aimerais utiliser les options -n Et -r De logcat mais elles nécessitent que -f Fonctionne.

Aucune suggestion?


Remarques. Cette question est proche de ne question posée sur Ubunt mais qui n'a pas de réponses qui me soient utiles sur Windows, et une suggestion que j'ai déjà essayée et qui ne fonctionne pas. La plupart des références similaires sur SO citent simplement la page d'aide, en disant que -f filename Devrait fonctionner.

Question modifiée pour la maintenir à jour avec des commentaires et réponses utiles.

20
Cheeseminer

Malheureusement, le -f l'option pour logcat semble pouvoir uniquement créer des fichiers sur le système de fichiers du appareil Android et non sur le hôte de développement.

En spécifiant un nom de fichier nu, vous l'avez probablement tenté de créer un fichier dans le répertoire racine de l'appareil, qui n'est normalement pas accessible en écriture.

Si vous souhaitez créer un fichier sur le périphérique, spécifiez un emplacement accessible en écriture (les chemins appropriés varient en fonction du périphérique et de la construction, mais pour prendre un exemple actuel):

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

À titre d'explication supplémentaire, l'expérience montre que la saisie de adb logcat provoque le /system/bin/logcat programme sur l'appareil à exécuter, similaire à ce qui se passe si vous tapez adb Shell logcat. ADB peut renvoyer trivialement la sortie standard ou d'erreur de ce programme à la machine hôte, mais il n'y a pas d'API côté périphérique qu'un programme en cours d'exécution sur le périphérique pourrait utiliser pour demander à ADB de créer des fichiers sur la machine de développement. Il serait possible que les opérations de sauvegarde dans un fichier et de rotation soient implémentées dans la partie d'ADB qui s'exécute sur la machine de développement, mais ce n'est pas ainsi que cela fonctionne actuellement.

la solution de bonitarunner utilisant une redirection Shell sur la machine de développement est une réponse simple. Il devrait être possible de proposer un programme ou un script de filtrage côté hôte qui implémenterait des fonctionnalités de limitation et de rotation similaires à -r et -n options.

30
Chris Stratton
adb logcat > logfile.txt

adb logcat *:E > logfile.txt

Si vous souhaitez filtrer uniquement les erreurs.

Cela fonctionne pour moi sur MS Windows 7.

20
bonitarunner

Utilisation adb logcat -d > log.txt

Cela va écrire les journaux sur votre machine de développement.

19
flameshimmer