[Lldb-commits] [PATCH] D111339: [lldb] Parse and display reporting errors from JSON crashlogs

Jonas Devlieghere via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Oct 7 12:16:59 PDT 2021


JDevlieghere created this revision.
JDevlieghere added reviewers: jingham, aprantl.
JDevlieghere requested review of this revision.

JSON crashlogs have an optional field named `reportNotes` that contains any potential errors encountered by the crash reporter when generating the crashlog. Parse and display them in LLDB.


https://reviews.llvm.org/D111339

Files:
  lldb/examples/python/crashlog.py
  lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips
  lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test


Index: lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test
===================================================================
--- lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test
+++ 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
Index: lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips
===================================================================
--- lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips
+++ 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"
+]
 }
Index: lldb/examples/python/crashlog.py
===================================================================
--- lldb/examples/python/crashlog.py
+++ lldb/examples/python/crashlog.py
@@ -330,6 +330,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
@@ -433,6 +434,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:
@@ -523,6 +525,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
@@ -1062,6 +1068,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,


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D111339.377958.patch
Type: text/x-patch
Size: 2353 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20211007/28be9c09/attachment.bin>


More information about the lldb-commits mailing list