LLDB: Python API & 为观察点设置回调函数
LLDB: Python API & Setting callback function for a watchpoint
查看 http://lldb.llvm.org/python_reference/index.html 上 SBWatchpoint 的文档,我没有看到在触发观察点时分配 python 回调函数的方法。
有没有办法用 Python API 做到这一点?
有一个
watchpoint command add
支持这样做的命令
watchpoint command add [-e <boolean>] [-s <none>] [-F <python-function>] <watchpt-id>
如果你有一个 SBWatchpoint,你可以查询它的 ID,然后制作一个合适的命令行传递给 SBDebugger.HandleCommand
您需要 Python 模块来包含您要执行的脚本函数,并在命令行中通过限定名称传递它。例如,如果您有
# myfile.py
def callback(wp_no):
# stuff
# more stuff
mywatchpoint = ...
debugger.HandleCommand("watchpoint command add -F myfile.callback %s" % mywatchpoint.GetID())
将是告诉 LLDB 你的回调的方式
目前,无法将 Python 函数直接传递给 LLDB API 调用。
没有理由说这是不可能的,但在一个多种脚本语言可以共存的世界里要做到正确有点棘手,而且鉴于缺乏可行的替代策略,获得它的压力不大正在工作。
查看 http://lldb.llvm.org/python_reference/index.html 上 SBWatchpoint 的文档,我没有看到在触发观察点时分配 python 回调函数的方法。
有没有办法用 Python API 做到这一点?
有一个
watchpoint command add
支持这样做的命令
watchpoint command add [-e <boolean>] [-s <none>] [-F <python-function>] <watchpt-id>
如果你有一个 SBWatchpoint,你可以查询它的 ID,然后制作一个合适的命令行传递给 SBDebugger.HandleCommand
您需要 Python 模块来包含您要执行的脚本函数,并在命令行中通过限定名称传递它。例如,如果您有
# myfile.py
def callback(wp_no):
# stuff
# more stuff
mywatchpoint = ...
debugger.HandleCommand("watchpoint command add -F myfile.callback %s" % mywatchpoint.GetID())
将是告诉 LLDB 你的回调的方式
目前,无法将 Python 函数直接传递给 LLDB API 调用。
没有理由说这是不可能的,但在一个多种脚本语言可以共存的世界里要做到正确有点棘手,而且鉴于缺乏可行的替代策略,获得它的压力不大正在工作。