【发布时间】:2020-11-13 09:41:23
【问题描述】:
我试过这样:
destination = thread.GetFrameAtIndex(0).GetSymbol().GetName()
# registers = thread.GetFrameAtIndex(0).GetRegisters()
for x,i in enumerate(thread.GetFrameAtIndex(0).get_arguments()):
log("arg: {0}: sum: {1} val: {2}".format(x,
i.GetSummary(),
i.GetValue()))
for x, i in enumerate(thread.GetFrameAtIndex(0).GetRegisters()):
log("reg: {0}: sum: {1} val: {2} desc: ".format(
x,
i.GetSummary(),
i.GetValue(),
i.GetObjectDescription()))
想法是获取指针的所有类型,值和内容(当lldb可以解析它们时) 例如对于 char *、string、NSString 等。除了 GetSummary() / GetObjectDescription() 将能够将它们解析为实际的字符串。
问题是当我尝试跟踪 thread.GetFrameAtIndex(0).get_arguments() 时总是返回空列表, thread.GetFrameAtIndex(0).GetRegisters() 的输出如下所示:
reg: 0: sum: None val: None desc:
reg: 1: sum: None val: None desc:
reg: 2: sum: None val: None desc:
我在做什么?
我的目的是将它添加到我在 lldb 中构建的调用跟踪器中,因此在每个函数中,跟踪器将尽最大努力解析函数参数值,并在退出时尽最大努力解析函数返回值。
【问题讨论】:
标签: python macos lldb macos-catalina