Si vous voulez des informations sensées, je recommande des commandes sensées :) (aucune infraction ne signifie, je plaisante). La question devrait donc se lire:
Comment obtenir des informations de journal depuis un appareil Android?
Et maintenant, nous sommes du meilleur côté. Il existe plusieurs approches qui peuvent être utilisées:
- utiliser des applications pour afficher les informations de journal (codées par couleur)
- utiliser ADB (partie du SDK Android) pour extraire à distance les mêmes informations
- utiliser ssh à distance (ou une application de terminal local) pour acquérir les informations directement à partir de l'appareil
Pour gérer complètement ce sujet, il faut plus que cette simple réponse (si vous êtes intéressé, vous pouvez par exemple trouver des informations plus détaillées sur de nombreux sites Web, ou dans le livre d'Andrew Hoog Android Forensics: Investigation, Analysis and Mobile Security for Google Android , que j'avais le honneur de traduire en allemand. Il existe probablement bien d'autres sources également.
Je vais donc donner quelques exemples ici pour vous aider à démarrer:
Utilisation d'applications
L'application probablement la plus connue dans ce contexte est aLogcat , disponible gratuitement dans le Playstore (et le développeur acceptera volontiers votre don pour l'autre variante de la même application). Vous trouverez une capture d'écran ci-dessous 1 . L'application vous permet de filtrer les journaux, de démarrer / arrêter l'enregistrement des messages de journal et même de stocker les extraits enregistrés sur votre carte SD - bien sûr en texte brut, comme vous l'avez demandé.
Une autre application de cette section est Log Collector , qui essaie simplement de récupérer l'intégralité du journal disponible et de l'envoyer via le menu de partage 2 .
Le pont de débogage Android (ADB)
Le Kit de développement logiciel Android (SDK) comprend la adb
commande pour diverses tâches. Entre autres, il propose adb shell
d'exécuter des commandes sur l'appareil. En utilisant cela, vous pouvez également rassembler les informations de journal souhaitées: préfixez simplement les commandes ci-dessous avec adb shell
.
Invite de commande sur l'appareil
En utilisant une application de terminal (par exemple Android Terminal Emulator ou Terminal IDE ), vous pouvez accéder aux journaux directement à l'invite de commande, localement sur votre appareil. Un peu plus confortable, cela peut être fait en exécutant un serveur ssh (par exemple DroidSSHd ou DropBear SSH Server ) sur votre appareil, et y accéder depuis votre ordinateur. De cette façon, vous pouvez travailler sur un grand écran, tout en examinant vos journaux.
Commandes pour accéder à vos informations de journal
Il existe de nombreuses commandes puissantes que vous pouvez utiliser pour accéder à vos informations de journal à partir de la ligne de commande, et je ne donnerai ici que quelques exemples.
dmesg
La dmesg
commande extrait le journal du noyau:
$ dmesg
<6>[82839.126586] PM: Syncing filesystems ... done.
<7>[82839.189056] PM: Preparing system for mem sleep
<4>[82839.189361] Freezing user space processes ... (elapsed 0.05 seconds) done.
<4>[82839.240661] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
<7>[82839.242279] PM: Entering mem sleep
<4>[82839.242889] Suspending console(s) (use no_console_suspend to debug)
<7>[82839.252410] vfp_pm_save_context: saving vfp state
<6>[82839.252716] PM: Resume timer in 26 secs (864747 ticks at 32768 ticks/sec.)
<6>[82842.091369] Successfully put all powerdomains to target state
<6>[82842.092468] wakeup wake lock: wifi_wake
logcat
Avec logcat
, vous pouvez accéder à de nombreuses informations de journalisation - mais la plupart du temps, cela nécessite un root. Il possède certains paramètres pour filtrer les informations, par exemple en sélectionnant le tampon de journal avec lequel lire -b
. Veuillez lire les informations fournies sur la page des développeurs sur logcat pour plus de détails. Pour vous donner deux exemples: logcat -b events
répertorierait des événements ou des logcat -b radio
informations sur le module radio de votre appareil.
dumpsys et dumpstate
Les deux commandes dumpsys
et dumpstate
vous donnent des informations détaillées sur le système:
$ dumpsys
Currently running services:
LocationProxyService
SurfaceFlinger
accessibility
account
activity
<snip>
DUMP OF SERVICE account:
Accounts: 1
Account {[email protected], type=com.google}
<snip>
DUMP OF SERVICE alarm:
$ dumpstate
========================================================
== dumpstate: 2012-08-18 23:39:53
========================================================
Build: Gingerbread GWK74 - CyanogenMilestone2
Bootloader: 0x0000
Radio: unknown
<snip>
------ MEMORY INFO (/proc/meminfo) ------
MemTotal: 487344 kB
MemFree: 10436 kB
Buffers: 14136 kB
Cached: 145460 kB
<snip>
rapport d'erreur
Et si vous êtes trop paresseux pour vous souvenir de tous, utilisez simplement la bugreport
commande - qui appelle tout ci-dessus et la regroupe pour un joli rapport de bogue au développeur ...
Bien sûr, vous pouvez rediriger la sortie de toutes ces commandes vers un fichier à copier sur votre ordinateur, et dans la plupart des cas, vous devez le faire - car votre mémoire tampon d'écran serait beaucoup trop petite pour tout gérer: bugreport > /mnt/sdcard/bugreport.txt
serait un exemple pour cette partie.
$ dmesg
oudmsg
? Il doit y avoir une faute de frappe dans l'une d'elles :)adb shell pm grant com.nolanlawson.logcat android.permission.READ_LOGS
Pour les développeurs (ou autres parties intéressées) qui ont besoin d'analyser ce fichier brut, voici quelques ressources:
android_logger_list_read()
pour rassembler les entrées de journal: https://android.googlesource.com/platform/system/core/+/master/logcat/logcat.cppLe format réel du format de journal est détaillé à:
Une copie des pièces pertinentes, légèrement annotée et réorganisée pour votre commodité:
Vous pouvez distinguer les versions des différences en regardant les troisième et quatre octets. Le format dépend apparemment aussi de l'endianité de votre plateforme. Pour les messages v1,
__pad
est égal à0
. les messages v2 (et v3) utilisent 24 (0x18
).Pour
main
,radio
et lessystem
journauxmsg
champ est interprété comme suit ( la source ):\0
comme séparateur\0
comme terminateurSi ce message est tronqué, la fin
\0
peut être manquante.events
Cependant, pour le journal, lemsg
champ contient les données binaires suivantes:length
, suivi deslength
octets contenant une chaîne encodée en UTF8length
, suivi par leslength
nœuds d'arborescence chacun des siensAndroidEventLogType
.la source