[Lldb-commits] [lldb] a62cbd9 - [lldb] Include thread name in crashlog.py output

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Thu Apr 22 11:38:59 PDT 2021


Author: Jonas Devlieghere
Date: 2021-04-22T11:38:53-07:00
New Revision: a62cbd9a0211d08bace8794b435996890feb44d4

URL: https://github.com/llvm/llvm-project/commit/a62cbd9a0211d08bace8794b435996890feb44d4
DIFF: https://github.com/llvm/llvm-project/commit/a62cbd9a0211d08bace8794b435996890feb44d4.diff

LOG: [lldb] Include thread name in crashlog.py output

Update the JSON parser to include the thread name in the Thread object.

rdar://76677320

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/lldb/examples/python/crashlog.py b/lldb/examples/python/crashlog.py
index 1f26739f60e16..3fde19e0895b9 100755
--- a/lldb/examples/python/crashlog.py
+++ b/lldb/examples/python/crashlog.py
@@ -418,11 +418,15 @@ def parse(self):
             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'])
+            reason = self.parse_crash_reason(self.data['exception'])
+            if thread.reason:
+                thread.reason = '{} {}'.format(thread.reason, reason)
+            else:
+                thread.reason = reason
         except (KeyError, ValueError, TypeError) as e:
-           raise CrashLogParseException(
-               'Failed to parse JSON crashlog: {}: {}'.format(
-                   type(e).__name__, e))
+            raise CrashLogParseException(
+                'Failed to parse JSON crashlog: {}: {}'.format(
+                    type(e).__name__, e))
 
         return self.crashlog
 
@@ -480,6 +484,8 @@ def parse_threads(self, json_threads):
         idx = 0
         for json_thread in json_threads:
             thread = self.crashlog.Thread(idx, False)
+            if 'name' in json_thread:
+                thread.reason = json_thread['name']
             if json_thread.get('triggered', False):
                 self.crashlog.crashed_thread_idx = idx
                 self.registers = self.parse_thread_registers(

diff  --git a/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips b/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips
index 02a7a037afe44..5446d0d9973a4 100644
--- a/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips
+++ b/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.ips
@@ -40,6 +40,7 @@
   {
     "triggered": true,
     "id": 6152004,
+    "name": "Crashing Thread Name",
     "threadState": {
       "r13": {
         "value": 0

diff  --git a/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test b/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test
index fc95f489c3b4c..46c37132fc47a 100644
--- a/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test
+++ b/lldb/test/Shell/ScriptInterpreter/Python/Crashlog/json.test
@@ -3,7 +3,7 @@
 # RUN: python %S/patch-crashlog.py --binary %t.out --crashlog %t.crash --offsets '{"main":20, "bar":9, "foo":16}' --json
 # RUN: %lldb %t.out -o 'command script import lldb.macosx.crashlog' -o 'crashlog %t.crash' 2>&1 | FileCheck %s
 
-# CHECK: Thread[0] EXC_BAD_ACCESS (SIGSEGV) (KERN_INVALID_ADDRESS at 0x0000000000000000)
+# CHECK: Thread[0] Crashing Thread Name EXC_BAD_ACCESS (SIGSEGV) (KERN_INVALID_ADDRESS at 0x0000000000000000)
 # CHECK: [  0] {{.*}}out`foo + 16 at test.c
 # CHECK: [  1] {{.*}}out`bar + 8 at test.c
 # CHECK: [  2] {{.*}}out`main + 19 at test.c


        


More information about the lldb-commits mailing list