使用Python脚本时,在Xcode lldb调试器中清空lldb.frame变量 我目前正在为C++中的自定义对象绘制绘图命令。我使用的是Xcode v10.1
我使用命令脚本import test.py导入自己的命令,其中包含以下函数:使用Python脚本时,在Xcode lldb调试器中清空lldb.frame变量 我目前正在为C++中的自定义对象绘制绘图命令。我使用的是Xcode v10.1,python,c++,xcode,lldb,Python,C++,Xcode,Lldb,我使用命令脚本import test.py导入自己的命令,其中包含以下函数: import lldb def test_function(debugger, command, result, dict): obj = lldb.frame.FindVariable("custom_object") print(obj) def __lldb_init_module (debugger, dict): debugger.HandleCommand('comm
import lldb
def test_function(debugger, command, result, dict):
obj = lldb.frame.FindVariable("custom_object")
print(obj)
def __lldb_init_module (debugger, dict):
debugger.HandleCommand('command script add -f test.test_function test')
其中自定义对象是我想在Python脚本中使用的对象
如果我刚刚打开调试器,则会出现以下错误:
obj = lldb.frame.FindVariable("custom_object")
AttributeError: 'NoneType' object has no attribute 'FindVariable'
然而,当我在Xcode中直接打开嵌入式Python解释器并执行与上面相同的代码行时,我没有得到任何错误
如果我现在再次执行自定义命令,它将对调试器相同范围内的所有对象成功执行。
lldb.frame
未在基于lldb python的命令中定义-这就是为什么它是NoneType
lldb.{process,thread,frame}
只是为了方便使用交互式脚本解释器。但是,对于一个可能在停止钩子、断点命令等中运行的命令来说,它的进程和线程依赖于某种全局状态是没有意义的。毕竟,可能有两个线程同时命中同一断点。因此没有唯一的“lldb.thread”
最好使用以SBExecutionContext作为第三个参数(如中所述)的命令函数版本,并从该参数获取线程和帧