Digging into logcat on-device
We all know how to run adb logcat
and some of us might have used a flag or two or piped the output to grep
but what do we do if we need to access the contents of the log from on-device (e.g. when looking for the output file of our thread traces during a UIAutomator test)?
We can access the logcat from shell via the (you probably guessed it)logcat
command. This command is documented quite extensively and provides quite a fair amount of options. It’s fairly straightforward to filter our log when we need to reconcile the results of some command we’ve previously executed in the shell.
If we’re trying to get the location to our thread traces, we can use some options to logcat and a few piped on commands.
# logcat -d -s -b main "tombstoned:E" | \
tail -n+2 | \
tail -n1 | \
awk '{ print $NF }
/data/anr/trace_12
The built-in logcat comes with lots of options but I also wanted to change the output format and create profiles based on my debugging task. To handle that, I created a simple utility with Go. I’m also working on an interactive, Curses-based version but the library I’m using for that right now has some bugs. Maybe you’ll find it’s useful for you, too!