Chromium logging format

To enable logging for Chrome/Chromium, you can just append --enable-logging to the launch command, then logs could be found from console or ~/Library/Application Support/Chromium/chrome_debug.log. Refer to How to enable logging - The Chromium Projects for more details.

To figure out the logging format, please refer to LogMessage::Init from file base/ in Chromium repo, basically it is as below:


Under MacOS, the THREAD_ID is actually a mach port name that bound to the thread, refer to base::PlatformThread::CurrentId in base/threading/ That is why the thread id from chrome_debug.log is different from thread id from debugger such as lldb, lsmp is a useful tool to see connection of those two ids.

For example, the thread id from chrome_debug.log is 775 as below:

[2945:775:0509/102523.114814:ERROR:***********.cc(505)] ******************

Now attach to the process 2945 with lldb:

lldb -p 2945

and list all threads with

thread list

There is no thread with id 775, but there is a thread with id 0x78f15.

* thread #1: tid = 0x78f15, 0x00007fff6aaeedfa libsystem_kernel.dylib`mach_msg_trap + 10, name = 'CrBrowserMain', queue = '', stop reason = signal SIGSTOP

There seems no connection between the number 775 and 0x78f15, but the connection can be found with sudo lsmp -p 2945 and its output

  name      ipc-object    rights     flags   boost  reqs  recv  send ... identifier  type
---------   ----------  ----------  -------- -----  ---- ----- ----- ... ----------- ------------
0x00000307  0x4139aedb  send        --------        ---            1 ... 0x00000000  THREAD (0x78f15)

The mach port name 0x00000307 is associated with thread 0x78f15, 0x00000307 is just the hex value of 775.