diff --git a/lldb/examples/python/crashlog.py b/lldb/examples/python/crashlog.py --- a/lldb/examples/python/crashlog.py +++ b/lldb/examples/python/crashlog.py @@ -334,6 +334,7 @@ self.threads = list() self.backtraces = list() # For application specific backtraces self.idents = list() # A list of the required identifiers for doing all stack backtraces + self.errors = list() self.crashed_thread_idx = -1 self.version = -1 self.target = None @@ -437,6 +438,7 @@ self.parse_process_info(self.data) self.parse_images(self.data['usedImages']) self.parse_threads(self.data['threads']) + self.parse_errors(self.data) thread = self.crashlog.threads[self.crashlog.crashed_thread_idx] reason = self.parse_crash_reason(self.data['exception']) if thread.reason: @@ -528,6 +530,10 @@ pass return registers + def parse_errors(self, json_data): + if 'reportNotes' in json_data: + self.crashlog.errors = json_data['reportNotes'] + class CrashLogParseMode: NORMAL = 0 @@ -1067,6 +1073,11 @@ thread.dump_symbolicated(crash_log, options) print() + if crash_log.errors: + print("Errors:") + for error in crash_log.errors: + print(error) + def CreateSymbolicateCrashLogOptions( command_name, diff --git a/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips b/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips --- a/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips +++ b/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips @@ -170,5 +170,9 @@ "threadTriggered" : { "queue" : "com.apple.main-thread" } -} +}, + "reportNotes" : [ + "invalid foo", + "invalid bar" +] } diff --git a/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test b/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test --- a/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test +++ b/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test @@ -13,3 +13,5 @@ # CHECK: [ 1] {{.*}}out`bar + 8 at test.c # CHECK: [ 2] {{.*}}out`main + 19 at test.c # CHECK: rbp = 0x00007ffeec22a530 +# CHECK: invalid foo +# CHECK: invalid bar