Home » Android » android – What is the difference between logcat vs. dmesg?

android – What is the difference between logcat vs. dmesg?

Posted by: admin June 15, 2020 Leave a comment


What log source is used by logcat (with default settings: adb shell logcat). Are dmesg logs included in logcat’s output? If not, what’s the difference between dmesg logs and logcat logs?

How to&Answers:

According to the source code https://github.com/android/platform_system_core/blob/master/liblog/logd_write.c Log.d(String tag, String message) writes directly to /dev/log/main.

You can write there like this adb shell echo "Hello world" >> /dev/log/main

But dmesg prints the contents of the kernel’s ring buffer. So dmesg will print only what system writes to kernel log, logcat will output only android app’s logs.


LOGCAT– This is used in Android , to see the different messages written by the activity managers inside the Android , u see android also uses the linux kernel , but what it does is, once the kernel boots ( the hardware initialization /probing has been taken care of) , the android starts a process called init which parses the init.rc file which contains all the android system activities , i mean the basic processes for android to boot , in this init.rc file there’s a process called zygote which starts the Dalvik Virtual Machine , and after that all the other activity managers , which will be used by the application to interact with the hardware . so its basically messages from the VM , for the application programmers to debug it .
logcat example

Dmesg- it is messages from the kernel , suppose u write a driver , it can be used as a tool for debugging drivers and other kernel code, most of them are driver messages its a good way of debugging , the kernel , driver etc..
dmesg example

Logcat is only for android and its not available in any other OS , both Logcat and dmesg is available on Android but not the vice versa for any linux distros .