Aktivierung kernel logging / logcat Meldungen

P

pixelator

Fortgeschrittenes Mitglied
Threadstarter
Was mir jetzt noch fehlt zu meinem Glück ist das die Aktivierung des kernel loggings damit ich LogCat Meldungen von laufenden apps erhalten kann. Das ist für die App-Entwicklung schon sehr wichtig...

Wo finde ich diese LogCat Meldungen?

(1) Man kann sich auch die App "aLogcat" aus dem Market herunterladen oder als APK:
alogcat-2.3.apk - alogcat - aLogcat 2.3 for Android 1.6+ - Android Log Viewer (logcat) Application - Google Project Hosting

Hier bekomme ich leider nur einen weißen Bildschirm, also keine Meldungen.


(2) Man sieht die LogCat Meldungen auch per

Code:
adb logcat
oder in der LogCat View des Eclipse Android SDK Plugins live sehen.

Leider bekomme ich stattdessen nur

Code:
Unable to open log device '/dev/log/main': No such file or directory
Da bin ich bisher nicht weiter gekommen. :confused2:

Ich sehe, dass nach dem Booten keine Datei

/dev/log/main

angelegt ist. Bei meinem HTC Desire gibt es sowohl den Ordner log, als auch 4 device-Dateien darin:


Code:
$ cd dev
$ ls -l log
drwxr-xr-x root     root              2011-09-16 08:56 log

$ cd log
$ ls -l
crw-rw--w- root     log       10,  34 2011-09-16 08:56 system
crw-rw--w- root     log       10,  35 2011-09-16 08:56 radio
crw-rw--w- root     log       10,  36 2011-09-16 08:56 events
crw-rw--w- root     log       10,  37 2011-09-16 08:56 main
Wenn ich auf dem Ideos X3 versuche, den log-Ordner manuell anzulegen mit

Code:
$su
# mkdir /dev/log
und dann z.B. das device file "main" händisch anlege mit

Code:
# mknod main c 10 37
bekomme ich in der Shell des PCs nach

Code:
adb logcat
die Meldung

Code:
Unable to open log device '/dev/log/main': Device or resource busy
Nach einem reboot sind die Dateien und Ordner dann wieder weg.

Man muss irgendwo im init-Prozess verankern, dass die Dateien (die "Geräte") angelegt werden.

Als Parallele gibt es einen TIP, den bootprozess auch sichtbar zu loggen:

Debug Message while Boot Up - android-porting | Google Groups

...nur ob das dann auch wirklich nach /dev/log/main loggt
wenn man eines der (welches überhaupt?) init-Skripte
um z.B. diese Zeile ergänzt?

Code:
service logcat /system/bin/logcat -r 1000 -v long -f /dev/log/main
In einem anderen Beitrag habe ich gelesen, dass das logging bei vielen custom ROMs abgeschaltet sei aus Performancegründen und man es durch auskommentieren einer Zeile zum logging überreden könnte. Leider existiert eine solche Zeile im ROM nicht:

Where, Oh Where Has My Little Log Gone? (ApeX 1.4.1 bug?) - Android Forums



Und was mich zum Schluss noch stutzig macht, ist die Datei uevent.rc
in der ich einen Hinweis gefunden haben, dass
"/dev/log/* being world-writable but not being world-readable for security reasons."

Nur ist nach dem Booten ja wie gesagt überhaupt kein Verzeichnis log vorhanden
auf das man diese Anpassung der Rechte vornehmen könnte (es sei denn der Ordner
log würde irgendwo nach dem Booten automatisch gelöscht und nicht wieder angelegt.)


Hier ist der Android logger beschrieben:

Android logger - eLinux.org

Dort steht sinngemäß dass der logger automatisch aktiv wird, wenn die Gerätedateien angelegt sind. (Man möge mich bitte korrigieren...):

The driver is activated when a user-space program opens a device node with the appropriate major and minor number.
These nodes are located in /dev/log, as shown below:
Code:
# ls -l /dev/log
crw-rw--w-    1 0        1007      10,  50 Nov  5 02:00 events
crw-rw--w-    1 0        1007      10,  51 Nov  5 02:00 main
crw-rw--w-    1 0        1007      10,  49 Nov  5 02:00 radio
 
Zuletzt bearbeitet:
P

pixelator

Fortgeschrittenes Mitglied
Threadstarter
Isch geh kapott!

Es geht doch tatsächlich auch "auf klick" ohne ein ROM anzupassen etc.

Dank des Hinweises von swmail aus dem Ideos X3 Forum (Info / Huawei U8510 IDEOS X3 Forum) kenne ich nun das versteckte Service-Menü:

Man muss als Telefonnummer eingeben:

*#*#2846579#*#*

Dann öffnet sich das Service menü, in dem man viele Informationen sehen und Einstellungen vornehmen kann.


Das logging konnte ich letztendlich aktivieren durch:

1.) logging einschalten
2.) log level auf "verbose" stellen
3.) Checkboxen anklicken für "Open Dump & Log", "Changing log switch" and "Open Sleep Log" in DumpPreferenceActivity


(Nach einem Neustart waren die Einstellungen wohl wieder weg, aber damit kann ich leben- bin froh das es schlussendlich doch geht...)
 
P

pixelator

Fortgeschrittenes Mitglied
Threadstarter
Die Logmeldungen kann man sich auf dem Smartphone selbst mit der kostenlosen Market-App "alogcat" anschauen.

Etwas übersichtlicher hat man es allerdings, wenn man das Smartphone per USB an den PC anschließt und das Android SDK installiert hat. Dann kann man in der Konsole / Eingabeaufforderung / shell eingeben:

adb logcat


Und am komfortabelsten hat man es wenn man das Android SDK, Eclipse (Helios) und das "Eclipse Android SDK Plugin" installiert hat. Dann kann man sich die Meldungen in einer Eclipse LogCat View anzeigen und nach Log-Leveln, Wörtern oder Teilen davon filtern. (Eclipse bietet per DDMS auch eine Screenshot-Funktion, die übrigens ganz ohne rooting funktioniert.)
 
U

Unbunt

Neues Mitglied
  • Hier gegebene Hinweise haben scheinbar funktioniert (alle Einstellungen machbar), aber nicht zum Erfolg geführt.
  • logcat funktioniert bei mir anscheinend nicht, da das device /dev/log/main fehlt. Lege ich es an, bekomme ich immer "permission denied". Unklar.
  • alogcat noch nicht ausprobiert, vermute, dass es sich auf /dev/log/main verläßt?
  • "kmsgcat" in der rootshell zeigt aber nützliche ergebnisse und augenscheinlich auch logcat Meldungen:
Code:
# kmsgcat

<4>[6596, Compiler] [26391.920526] do_exit: exit code=9
<4>[6597, Binder Thread #] [26391.920579] do_exit: exit code=9
<4>[7414, d.process.media] [26392.148781] do_exit: exit code=1024
<4>[19, kswapd0] [26392.189579] select 4547 (ndroid.settings), adj 9, size 5721, to kill
<4>[19, kswapd0] [26392.189614] select 5593 (d.apps.uploader), adj 11, size 2908, to kill
<4>[19, kswapd0] [26392.189660] send sigkill to 5593 (d.apps.uploader), adj 11, size 2908
<4>[5593, d.apps.uploader] [26392.190200] do_exit: exit code=9
<4>[5598, Binder Thread #] [26392.190267] do_exit: exit code=9
<4>[5594, HeapWorker] [26392.190849] do_exit: exit code=9
<4>[5595, GC] [26392.190905] do_exit: exit code=9
<4>[5596, Signal Catcher] [26392.193415] do_exit: exit code=9
<4>[5597, Compiler] [26392.193487] do_exit: exit code=9
<4>[5599, Binder Thread #] [26392.193614] do_exit: exit code=9
<4>[5600, RefQueueWorker@] [26392.193662] do_exit: exit code=9
<4>[5601, Thread-10] [26392.193709] do_exit: exit code=9
<4>[7417, MediaSyncServic] [26392.650247] do_exit: exit code=23552
<4>[7420, kmsgcat] [26394.124856] do_exit: exit code=65280
<4>[7419, logcat] [26394.130654] do_exit: exit code=65280
^C
 
Andy

Andy

Ehrenmitglied
/dev/log/Main gibt's bei mir auch nicht. Trotzdem funktioniert Logcat bei mir. Führst du Logcat im Terminal Emulator aus oder wie? Wenn ja gib zuerst “su“ ein.

Sent from my U8510 using Tapatalk
 
R

Ryuk

Experte
versuchs mal mit alogcat...
wenn das nicht geht, dann hast du das logging im service-menü evtl. mit ner anderen rom bzw. nem anderen kernel aktiviert...was aber nicht geht...
das logging kann glaube nur mit dem stock-kernel aktiviert werden...danach kannst du den oc-kernel wieder flashen...
 
F

fuchsteufel

Fortgeschrittenes Mitglied
@unbunt: kmsgcat zeigt nur die Meldungen des Kernels, logcat ist was anderes. Probiere mal einen reboot und wenn das Huawei-Logo kommt auf der Konsole folgenden Befehl ausführen
Code:
adb wait-for-device; adb shell dmesg|grep logger
dann sollte eine Meldung der Art
Code:
logger.c: log on/off=1
kommen. Wenn da 0 steht ist das logging nicht aktiv und du musst noch mal ins Service-Menü.
 
U

Unbunt

Neues Mitglied
Ryuk schrieb:
das logging kann glaube nur mit dem stock-kernel aktiviert werden...danach kannst du den oc-kernel wieder flashen...
Absolut richtig. Hatte einen "custom Kernel" installiert. Das Service-Menü zeigt dann alles normal an, funktioniert aber anscheinend nicht richtig. Habe einmal den stock-kernel gebootet, bin ins Service-Menü, hab alles einmal angeklickt und siehe da: es läuft.

Danke!
 
K

Kashban

Fortgeschrittenes Mitglied
Unbunt schrieb:
Absolut richtig. Hatte einen "custom Kernel" installiert. Das Service-Menü zeigt dann alles normal an, funktioniert aber anscheinend nicht richtig. Habe einmal den stock-kernel gebootet, bin ins Service-Menü, hab alles einmal angeklickt und siehe da: es läuft.

Danke!
Auch wichtig: Das Logging beim Stock-ROM erst nach einem Reboot aktiv.
 
Oben Unten