Merge pull request #73 from ahupp/master

Handle alternative start proc log line
This commit is contained in:
Jake Wharton
2014-10-01 17:35:13 -07:00
+17 -9
View File
@@ -139,7 +139,8 @@ TAGTYPES = {
'F': colorize(' F ', fg=BLACK, bg=RED), '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_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_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.?$') PID_DEATH = re.compile(r'^Process ([a-zA-Z0-9._:]+) \(pid (\d+)\) has died.?$')
@@ -177,7 +178,6 @@ if sys.stdin.isatty():
else: else:
adb = FakeStdinProcess() adb = FakeStdinProcess()
pids = set() pids = set()
seen_pids = False
last_tag = None last_tag = None
app_pid = None app_pid = None
@@ -212,6 +212,17 @@ def parse_death(tag, message):
return pid, package_line return pid, package_line
return None, None 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: while adb.poll() is None:
try: try:
line = adb.stdout.readline().decode('utf-8', 'replace').strip() line = adb.stdout.readline().decode('utf-8', 'replace').strip()
@@ -229,14 +240,11 @@ while adb.poll() is None:
continue continue
level, tag, owner, message = log_line.groups() level, tag, owner, message = log_line.groups()
start = parse_start_proc(line)
start = PID_START.match(message) if start:
if start is not None: line_package, target, line_pid, line_uid, line_gids = start
line_package, target, line_pid, line_uid, line_gids = start.groups()
if match_packages(line_package): if match_packages(line_package):
pids.add(line_pid) pids.add(line_pid)
seen_pids = True
app_pid = line_pid app_pid = line_pid
@@ -266,7 +274,7 @@ while adb.poll() is None:
message = message.lstrip() message = message.lstrip()
owner = app_pid owner = app_pid
if seen_pids and owner not in pids: if owner not in pids:
continue continue
if level in LOG_LEVELS_MAP and LOG_LEVELS_MAP[level] < min_level: if level in LOG_LEVELS_MAP and LOG_LEVELS_MAP[level] < min_level:
continue continue