diff options
author | Jonas Devlieghere <jonas@devlieghere.com> | 2020-11-02 19:18:51 -0800 |
---|---|---|
committer | Jonas Devlieghere <jonas@devlieghere.com> | 2020-11-02 19:42:34 -0800 |
commit | 6c9f3fe908a70a646e619a1355df451c06f6c3a1 (patch) | |
tree | 5e58631607358469be657797bbffe12155cf465d /lldb/examples/python/crashlog.py | |
parent | d14e51806b0214560ec99b5d3ce797f5fa3f7522 (diff) | |
download | llvm-6c9f3fe908a70a646e619a1355df451c06f6c3a1.zip llvm-6c9f3fe908a70a646e619a1355df451c06f6c3a1.tar.gz llvm-6c9f3fe908a70a646e619a1355df451c06f6c3a1.tar.bz2 |
[crashlog] Turn crash log parsing modes into a Python 'enum' (NFC)
Python doesn't support enums before PEP 435, but using a class with
constants is how it's commonly emulated. It can be converted into a real
Enum (in Python 3.4 and later) by extending the Enum class:
class CrashLogParseMode(Enum):
NORMAL = 0
THREAD = 1
IMAGES = 2
THREGS = 3
SYSTEM = 4
INSTRS = 5
Diffstat (limited to 'lldb/examples/python/crashlog.py')
-rwxr-xr-x | lldb/examples/python/crashlog.py | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/lldb/examples/python/crashlog.py b/lldb/examples/python/crashlog.py index 68134f1..0819ae8 100755 --- a/lldb/examples/python/crashlog.py +++ b/lldb/examples/python/crashlog.py @@ -72,13 +72,13 @@ def read_plist(s): else: return plistlib.readPlistFromString(s) - -PARSE_MODE_NORMAL = 0 -PARSE_MODE_THREAD = 1 -PARSE_MODE_IMAGES = 2 -PARSE_MODE_THREGS = 3 -PARSE_MODE_SYSTEM = 4 -PARSE_MODE_INSTRS = 5 +class CrashLogParseMode: + NORMAL = 0 + THREAD = 1 + IMAGES = 2 + THREGS = 3 + SYSTEM = 4 + INSTRS = 5 class CrashLog(symbolication.Symbolicator): @@ -369,7 +369,7 @@ class CrashLog(symbolication.Symbolicator): return self.file_lines = f.read().splitlines() - parse_mode = PARSE_MODE_NORMAL + parse_mode = CrashLogParseMode.NORMAL thread = None app_specific_backtrace = False for line in self.file_lines: @@ -377,7 +377,7 @@ class CrashLog(symbolication.Symbolicator): line_len = len(line) if line_len == 0: if thread: - if parse_mode == PARSE_MODE_THREAD: + if parse_mode == CrashLogParseMode.THREAD: if thread.index == self.crashed_thread_idx: thread.reason = '' if self.thread_exception: @@ -394,9 +394,9 @@ class CrashLog(symbolication.Symbolicator): # in the info_lines wasn't empty if len(self.info_lines) > 0 and len(self.info_lines[-1]): self.info_lines.append(line) - parse_mode = PARSE_MODE_NORMAL - # print 'PARSE_MODE_NORMAL' - elif parse_mode == PARSE_MODE_NORMAL: + parse_mode = CrashLogParseMode.NORMAL + # print 'CrashLogParseMode.NORMAL' + elif parse_mode == CrashLogParseMode.NORMAL: if line.startswith('Process:'): (self.process_name, pid_with_brackets) = line[ 8:].strip().split(' [') @@ -439,7 +439,7 @@ class CrashLog(symbolication.Symbolicator): self.version = int(line[15:].strip()) continue elif line.startswith('System Profile:'): - parse_mode = PARSE_MODE_SYSTEM + parse_mode = CrashLogParseMode.SYSTEM continue elif (line.startswith('Interval Since Last Report:') or line.startswith('Crashes Since Last Report:') or @@ -455,38 +455,38 @@ class CrashLog(symbolication.Symbolicator): app_specific_backtrace = False thread_state_match = self.thread_regex.search(line) thread_idx = int(thread_state_match.group(1)) - parse_mode = PARSE_MODE_THREGS + parse_mode = CrashLogParseMode.THREGS thread = self.threads[thread_idx] continue thread_insts_match = self.thread_instrs_regex.search(line) if thread_insts_match: - parse_mode = PARSE_MODE_INSTRS + parse_mode = CrashLogParseMode.INSTRS continue thread_match = self.thread_regex.search(line) if thread_match: app_specific_backtrace = False - parse_mode = PARSE_MODE_THREAD + parse_mode = CrashLogParseMode.THREAD thread_idx = int(thread_match.group(1)) thread = CrashLog.Thread(thread_idx, False) continue continue elif line.startswith('Binary Images:'): - parse_mode = PARSE_MODE_IMAGES + parse_mode = CrashLogParseMode.IMAGES continue elif line.startswith('Application Specific Backtrace'): app_backtrace_match = self.app_backtrace_regex.search(line) if app_backtrace_match: - parse_mode = PARSE_MODE_THREAD + parse_mode = CrashLogParseMode.THREAD app_specific_backtrace = True idx = int(app_backtrace_match.group(1)) thread = CrashLog.Thread(idx, True) elif line.startswith('Last Exception Backtrace:'): # iOS - parse_mode = PARSE_MODE_THREAD + parse_mode = CrashLogParseMode.THREAD app_specific_backtrace = True idx = 1 thread = CrashLog.Thread(idx, True) self.info_lines.append(line.strip()) - elif parse_mode == PARSE_MODE_THREAD: + elif parse_mode == CrashLogParseMode.THREAD: if line.startswith('Thread'): continue if self.null_frame_regex.search(line): @@ -504,7 +504,7 @@ class CrashLog(symbolication.Symbolicator): frame_addr, 0), frame_ofs)) else: print('error: frame regex failed for line: "%s"' % line) - elif parse_mode == PARSE_MODE_IMAGES: + elif parse_mode == CrashLogParseMode.IMAGES: image_match = self.image_regex_uuid.search(line) if image_match: (img_lo, img_hi, img_name, _, img_version, _, @@ -519,7 +519,7 @@ class CrashLog(symbolication.Symbolicator): else: print("error: image regex failed for: %s" % line) - elif parse_mode == PARSE_MODE_THREGS: + elif parse_mode == CrashLogParseMode.THREGS: stripped_line = line.strip() # "r12: 0x00007fff6b5939c8 r13: 0x0000000007000006 r14: 0x0000000000002a03 r15: 0x0000000000000c00" reg_values = re.findall( @@ -530,9 +530,9 @@ class CrashLog(symbolication.Symbolicator): # print 'reg = "%s"' % reg # print 'value = "%s"' % value thread.registers[reg.strip()] = int(value, 0) - elif parse_mode == PARSE_MODE_SYSTEM: + elif parse_mode == CrashLogParseMode.SYSTEM: self.system_profile.append(line) - elif parse_mode == PARSE_MODE_INSTRS: + elif parse_mode == CrashLogParseMode.INSTRS: pass f.close() |