GNU/Linux >> Linux Esercitazione >  >> Linux

Dove archivia i registri di arresto di Android?

Cerca in alcuni luoghi come questi:

/proc/last_kmsg
/data/tombstones/
/data/dontpanic/
/data/system/dropbox/

(Questo elenco non è strettamente i log del kernel, inclusi anche i log del framework e dell'applicazione, che a volte sono anch'essi interessanti)


TL;DR :
Esegui il comando tramite adb che copia logcat e proc/kmsg in un file e mantienilo in esecuzione anche quando adb si disconnette con nohup , disown o setsid . Probabilmente ha bisogno di busybox, ha bisogno anche di root e adb root.
setsid cat proc/kmsg > /sdcard/kmsg.txt &
e
logcat -v long -f /sdcard/logcat.txt (in qualche modo funziona solo senza setsid )

Oppure aggiungi normali comandi di copia ad alcuni script di avvio.
/TL;DR

Puoi copiare costantemente proc/kmsg e logcat in un file sul tuo dispositivo Android o su una scheda microSD per ottenere i log anche dopo la disconnessione di adb.

È necessario l'accesso root e l'accesso root adb affinché funzioni. Per quest'ultimo, usa l'impostazione nelle opzioni sviluppatore se hai una rom personalizzata o l'app non sicura adbd.

Dopo aver usato adb shell per ottenere la tua shell Android, digita su per ottenere l'accesso come superutente.

Quindi non devi solo inserire una e commerciale (& ) dopo il comando, ma assicurati anche che il comando continui a essere eseguito dopo la disconnessione di adb. Questo viene fatto da nohup , disown o setsid (vedi qui per l'utilizzo).
Se non funziona perché non hai questi comandi, devi installare busybox.
Vedi la mia domanda qui.

Vedi qui per come ottenere i log di logcat e del kernel e stamparli su un file o unirli. Vedi developer.android.com/tools/help/logcat.html per i parametri per il comando logcat.

Alla fine potresti avere un comando come setsid cat proc/kmsg > /sdcard/kmsg.txt & per i messaggi del kernel.

Per logcat potresti avere uno dei seguenti comandi:logcat -v long -f /sdcard/logcat.txt o logcat -v long > /sdcard/logcat.txt

Non so perché, ma a volte non funzionava con setsid e semplicemente non copiava continuamente ma si interrompeva poco dopo aver eseguito il comando. In queste situazioni, appariva anche inserendo jobs , cosa che altrimenti non avrebbe fatto. Quindi ha funzionato senza setsid , è rimasto attivo dopo la disconnessione e la riconnessione. Immagino che devi solo provare quando il file continua a ingrandirsi. Se qualcuno ha capito perché si sta comportando così... fammelo sapere e modificherò la risposta.

Probabilmente l'aggiunta dei comandi a uno script di avvio potrebbe essere una soluzione anche per alcuni.

Spero che questo aiuti.

cookie di lotta


Una soluzione che ho trovato per la raccolta dei registri di arresto in Android è eseguire adb pull /proc/kmsg C:\Logs.txt sul PC host e quindi spegnere il dispositivo. Otterrai i registri fino a quando la comunicazione USB tra l'host e il dispositivo non si interrompe! So che questo è solo un caso tra i numerosi scenari di spegnimento, ma non ho trovato risposte soddisfacenti per altri casi!


Linux
  1. Come fa Gcc a sapere dove è installato Boost?

  2. Debian – Dove si trova la cronologia della connettività di rete del negozio Debian?

  3. Dove Eclipse cerca eclipse.ini sotto Linux

  4. Dove memorizza Linux il mio syslog?

  5. da dove 'pkg-config' prende le sue informazioni?

Cosa sono i log di Linux e dove trovarli

Come installare ADB e Fastboot su Ubuntu 20.04, 18.04, 21.04

Dispositivo Android Debug Bridge (adb) - nessuna autorizzazione

eseguire dispositivi adb che mostrano un dispositivo non autorizzato?

Da dove viene il percorso per 169.254.0.0?

Logrotate non rimuove i vecchi registri