Handle alternative log format for process start

Some phones (like my samsung) do not log the 'Start proc ...' line in
logcat to indicate process start.  In my case it does log a line like

E/dalvikvm(pid): >>>>>> com.my.package [ more stuff ]

This commit adds support for that format to pidcat.
This commit is contained in:
Adam Hupp
2014-10-01 10:20:35 -07:00
parent 092ffc1869
commit 493e12a55c
+16 -6
View File
@@ -139,7 +139,8 @@ TAGTYPES = {
'F': colorize(' F ', fg=BLACK, bg=RED),
}
PID_START = re.compile(r'^Start proc ([a-zA-Z0-9._:]+) for ([a-z]+ [^:]+): pid=(\d+) uid=(\d+) gids=(.*)$')
PID_START = re.compile(r'^.*: Start proc ([a-zA-Z0-9._:]+) for ([a-z]+ [^:]+): pid=(\d+) uid=(\d+) gids=(.*)$')
PID_START_DALVIK = re.compile(r'^E/dalvikvm\((\d+)\): >>>>> ([a-zA-Z0-9._:]+) \[ userId:0 \| appId:(\d+) \]$')
PID_KILL = re.compile(r'^Killing (\d+):([a-zA-Z0-9._:]+)/[^:]+: (.*)$')
PID_LEAVE = re.compile(r'^No longer want ([a-zA-Z0-9._:]+) \(pid (\d+)\): .*$')
PID_DEATH = re.compile(r'^Process ([a-zA-Z0-9._:]+) \(pid (\d+)\) has died.?$')
@@ -211,6 +212,17 @@ def parse_death(tag, message):
return pid, package_line
return None, None
def parse_start_proc(line):
start = PID_START.match(line)
if start is not None:
line_package, target, line_pid, line_uid, line_gids = start.groups()
return line_package, target, line_pid, line_uid, line_gids
start = PID_START_DALVIK.match(line)
if start is not None:
line_pid, line_package, line_uid = start.groups()
return line_package, '', line_pid, line_uid, ''
return None
while adb.poll() is None:
try:
line = adb.stdout.readline().decode('utf-8', 'replace').strip()
@@ -228,11 +240,9 @@ while adb.poll() is None:
continue
level, tag, owner, message = log_line.groups()
start = PID_START.match(message)
if start is not None:
line_package, target, line_pid, line_uid, line_gids = start.groups()
start = parse_start_proc(line)
if start:
line_package, target, line_pid, line_uid, line_gids = start
if match_packages(line_package):
pids.add(line_pid)