5 votes

Comment augmenter la taille des tampons de logcat ?

Comment puis-je augmenter la taille des /dev/log/main par un facteur de 10 ? D'après ce que j'ai compris, le journal a une taille fixe (16K ?) et il se retourne lorsque cette limite est atteinte. J'aimerais savoir quelle est la taille actuelle du journal et l'augmenter considérablement.

Je suis en train de déboguer un problème qui se produit rarement lorsque le dispositif n'a pas été utilisé pendant une longue période (peut-être une heure ?). J'ai instrumenté le code avec des messages de journal afin de pouvoir comprendre ce qui se passe lorsque le problème se produit.

Mon problème est que mon instrumentation fait en sorte que le journal se retourne en 2 minutes environ. Je voudrais augmenter la taille du dev/log/main par un facteur 10 si possible.

6voto

Irfan Latif Points 16863

À partir d'Android 5, le système intégré au noyau bûcheron Le conducteur est déprécié qui a exposé les tampons de l'anneau par /dev/log/* dispositifs de caractères. A la place, un démon de journalisation en espace utilisateur nommé logd gère les tampons "main", "system", "radio", "events", et "crash". Des tampons optionnels "security" (par exemple pour adb shell / push / pull logging) et sur userdebug construit le "noyau" (pour klogd ) et "stats" (pour les statistiques des journaux) ont été ajoutés plus tard. logd couvre principalement les fonctionnalités de son homologue de bureau syslogd mais aussi klogd et partiellement auditd pour obtenir les journaux du sous-système SELinux du noyau. Le comportement du démon de journalisation est contrôlé à travers différents éléments propriétés .

Les applications et les processus natifs écrivent leurs journaux dans les tampons appropriés par l'intermédiaire des sockets. /dev/socket/logdw (en faisant usage de liblog fonctions). logcat La commande lit les tampons de /dev/socket/logdr tout en contrôlant le démon et les tampons grâce à /dev/socket/logd prise. Utilisez -g / -G options pour obtenir et définir la taille des tampons individuels :

  -g, --buffer-size
                  Get the size of the ring buffer.
  -G <size>, --buffer-size=<size>
                  Set size of log ring buffer, may suffix with K or M.

Il existe également une option dans les Options du développeur : Taille des tampons de l'enregistreur (qui définit également la propriété persist.logd.size ) pour définir la même taille pour tous les tampons.

persist.logd.size est lu à partir de /data/property/ qui n'est pas disponible à moins que /data est monté et décrypté (en cas de FDE). Mais parfois, les tampons peuvent déborder même avant cela, la solution est donc de mettre ro.logd.size (par default.prop / build.prop ou directement dans certains *.rc ) avant le logd est lancé.

3voto

Milner Points 533

Pour connaître la taille réelle du tampon en anneau, vous pouvez utiliser

$ adb logcat -g

Pour ajuster la taille du tampon circulaire, vous pouvez essayer de

$ adb logcat -r <kbytes>

C'est du moins ce que disent certains tutoriels. Pour plus de détails, vous pouvez lire Options de la commande "adb logcat" et tampons de journalisation .

P.S. : Je suppose que ces paramètres (taille de la mémoire tampon de l'anneau ajustée manuellement) ne survivront pas à un redémarrage -- juste pour y réfléchir.

3voto

sciguy1121 Points 830

Si vous souhaitez modifier la taille par défaut d'un tampon de journal, pour qu'elle persiste entre les redémarrages, vous pouvez recompiler le noyau avec des tailles de tampon mises à jour.

Le fichier contenant les définitions des tampons de journal est :

<kernel>/drivers/staging/android/logger.c

Les versions que j'examine utilisent une macro pour définir les tampons d'enregistrement dans ce fichier :

DEFINE_LOGGER_DEVICE(variable, name, size)

Il y aura probablement un certain nombre d'enregistreurs ; "principal" est généralement celui que vous recherchez.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X