Author: Dave Lee
Date: 2024-11-22T10:30:44-08:00
New Revision: f170f5fa80f244ccac51e9867de3ad823512a2d4

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

LOG: [lldb] Add stop_reason_data property to SBThread python extensions 
(#117266)

Add a pythonic `stop_reason_data` property to `SBThread`. The property
produces a list of ints.

Added: 
    

Modified: 
    lldb/bindings/interface/SBThreadExtensions.i
    lldb/test/API/lang/c/stepping/TestStepAndBreakpoints.py

Removed: 
    


################################################################################
diff  --git a/lldb/bindings/interface/SBThreadExtensions.i 
b/lldb/bindings/interface/SBThreadExtensions.i
index bfcc4d17e8f829..860a2d765a6695 100644
--- a/lldb/bindings/interface/SBThreadExtensions.i
+++ b/lldb/bindings/interface/SBThreadExtensions.i
@@ -45,6 +45,12 @@ STRING_EXTENSION_OUTSIDE(SBThread)
                 frames.append(frame)
             return frames
 
+        def get_stop_reason_data(self):
+            return [
+                self.GetStopReasonDataAtIndex(idx)
+                for idx in range(self.GetStopReasonDataCount())
+            ]
+
         id = property(GetThreadID, None, doc='''A read only property that 
returns the thread ID as an integer.''')
         idx = property(GetIndexID, None, doc='''A read only property that 
returns the thread index ID as an integer. Thread index ID values start at 1 
and increment as threads come and go and can be used to uniquely identify 
threads.''')
         return_value = property(GetStopReturnValue, None, doc='''A read only 
property that returns an lldb object that represents the return value from the 
last stop (lldb.SBValue) if we just stopped due to stepping out of a 
function.''')
@@ -56,6 +62,7 @@ STRING_EXTENSION_OUTSIDE(SBThread)
         queue = property(GetQueueName, None, doc='''A read only property that 
returns the dispatch queue name of this thread as a string.''')
         queue_id = property(GetQueueID, None, doc='''A read only property that 
returns the dispatch queue id of this thread as an integer.''')
         stop_reason = property(GetStopReason, None, doc='''A read only 
property that returns an lldb enumeration value (see enumerations that start 
with "lldb.eStopReason") that represents the reason this thread stopped.''')
+        stop_reason_data = property(get_stop_reason_data, None, doc='''A read 
only property that returns the stop reason data as a list.''')
         is_suspended = property(IsSuspended, None, doc='''A read only property 
that returns a boolean value that indicates if this thread is suspended.''')
         is_stopped = property(IsStopped, None, doc='''A read only property 
that returns a boolean value that indicates if this thread is stopped but not 
exited.''')
     %}

diff  --git a/lldb/test/API/lang/c/stepping/TestStepAndBreakpoints.py 
b/lldb/test/API/lang/c/stepping/TestStepAndBreakpoints.py
index 8d0de40cdd7b68..9fe787bcaa9fb7 100644
--- a/lldb/test/API/lang/c/stepping/TestStepAndBreakpoints.py
+++ b/lldb/test/API/lang/c/stepping/TestStepAndBreakpoints.py
@@ -99,9 +99,7 @@ def test_and_python_api(self):
         frame = thread.GetFrameAtIndex(0)
         current_line = frame.GetLineEntry().GetLine()
         current_file = frame.GetLineEntry().GetFileSpec()
-        current_bp = []
-        current_bp.append(thread.GetStopReasonDataAtIndex(0))
-        current_bp.append(thread.GetStopReasonDataAtIndex(1))
+        current_bp = thread.stop_reason_data
 
         stop_id_before_expression = process.GetStopID()
         stop_id_before_including_expressions = process.GetStopID(True)
@@ -124,9 +122,9 @@ def test_and_python_api(self):
             lldb.eStopReasonBreakpoint,
             "We still say we stopped for a breakpoint.",
         )
-        self.assertTrue(
-            thread.GetStopReasonDataAtIndex(0) == current_bp[0]
-            and thread.GetStopReasonDataAtIndex(1) == current_bp[1],
+        self.assertEqual(
+            thread.stop_reason_data,
+            current_bp,
             "And it is the same breakpoint.",
         )
 


        
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to