diff options
author | Jonas Devlieghere <jonas@devlieghere.com> | 2021-04-15 15:15:20 -0700 |
---|---|---|
committer | Jonas Devlieghere <jonas@devlieghere.com> | 2021-04-15 15:28:23 -0700 |
commit | 8639e2aaaffe1c58fbab238b25d49620ca86a76d (patch) | |
tree | 1c0dbfe07d576eed32df5b5afb86f2e90e22d852 /lldb/examples/python/crashlog.py | |
parent | be65347326084ad1c309d4330e94d671f011b35b (diff) | |
download | llvm-8639e2aaaffe1c58fbab238b25d49620ca86a76d.zip llvm-8639e2aaaffe1c58fbab238b25d49620ca86a76d.tar.gz llvm-8639e2aaaffe1c58fbab238b25d49620ca86a76d.tar.bz2 |
[lldb] Raise a CrashLogParseException when failing to parse JSON crashlog
Throw an exception with an actually helpful message when we fail to
parse a JSON crashlog.
Diffstat (limited to 'lldb/examples/python/crashlog.py')
-rwxr-xr-x | lldb/examples/python/crashlog.py | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/lldb/examples/python/crashlog.py b/lldb/examples/python/crashlog.py index 8869227..afae31f 100755 --- a/lldb/examples/python/crashlog.py +++ b/lldb/examples/python/crashlog.py @@ -383,6 +383,10 @@ class CrashLogFormatException(Exception): pass +class CrashLogParseException(Exception): + pass + + class CrashLogParser: def parse(self, debugger, path, verbose): try: @@ -409,12 +413,16 @@ class JSONCrashLogParser: except ValueError: raise CrashLogFormatException() - self.parse_process_info(self.data) - self.parse_images(self.data['usedImages']) - self.parse_threads(self.data['threads']) - - thread = self.crashlog.threads[self.crashlog.crashed_thread_idx] - thread.reason = self.parse_crash_reason(self.data['exception']) + try: + self.parse_process_info(self.data) + self.parse_images(self.data['usedImages']) + self.parse_threads(self.data['threads']) + thread = self.crashlog.threads[self.crashlog.crashed_thread_idx] + thread.reason = self.parse_crash_reason(self.data['exception']) + except (KeyError, ValueError, TypeError) as e: + raise CrashLogParseException( + 'Failed to parse JSON crashlog: {}: {}'.format( + type(e).__name__, e)) return self.crashlog |