the function signature for `GetStopDescription` is `lldb::SBThread::GetStopDescription(char *dst_or_null, size_t len)`. To get a description you need to call the function first time to get the buffer size. a second time to get the description. This is little worse from the python size as the signature is `lldb.SBThread.GetStopDescription(int: len) -> list[str]` the user has to pass the max size as possible with no way of checking if it is enough. This patch adds a new api `lldb.SBThread.GetStopDescription(desc: lldb.SBStream()) -> bool` `bool lldb::SBThread::GetStopDescription(lldb::SBStream &description)` which handles this case. Adds new Test case for lua.
40 lines
985 B
Python
40 lines
985 B
Python
"""
|
|
Fuzz tests an object after the default construction to make sure it does not crash lldb.
|
|
"""
|
|
|
|
import lldb
|
|
|
|
|
|
def fuzz_obj(obj):
|
|
obj.GetStopReason()
|
|
obj.GetStopReasonDataCount()
|
|
obj.GetStopReasonDataAtIndex(100)
|
|
obj.GetStopDescription(256)
|
|
obj.GetStopDescription(lldb.SBStream())
|
|
obj.GetThreadID()
|
|
obj.GetIndexID()
|
|
obj.GetName()
|
|
obj.GetQueueName()
|
|
obj.StepOver(lldb.eOnlyDuringStepping)
|
|
obj.StepInto(lldb.eOnlyDuringStepping)
|
|
obj.StepOut()
|
|
frame = lldb.SBFrame()
|
|
obj.StepOutOfFrame(frame)
|
|
obj.StepInstruction(True)
|
|
filespec = lldb.SBFileSpec()
|
|
obj.StepOverUntil(frame, filespec, 1234)
|
|
obj.RunToAddress(0xABCD)
|
|
obj.Suspend()
|
|
obj.Resume()
|
|
obj.IsSuspended()
|
|
obj.GetNumFrames()
|
|
obj.GetFrameAtIndex(200)
|
|
obj.GetSelectedFrame()
|
|
obj.SetSelectedFrame(999)
|
|
obj.GetProcess()
|
|
obj.GetDescription(lldb.SBStream())
|
|
obj.Clear()
|
|
for frame in obj:
|
|
s = str(frame)
|
|
len(obj)
|