【问题标题】:LLDB: Python API & Setting callback function for a watchpointLLDB:Python API 和设置观察点的回调函数
【发布时间】:2015-08-24 21:28:46
【问题描述】:

查看http://lldb.llvm.org/python_reference/index.html 的SBWatchpoint 文档,我没有看到在触发观察点时分配python 回调函数的方法。

有没有办法用 Python API 做到这一点?

【问题讨论】:

    标签: python scripting lldb


    【解决方案1】:

    有一个

    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 调用。

    没有理由说这是不可能的,但是在一个多种脚本语言可以共存的世界中,要做到这一点有点棘手,而且由于缺乏可行的替代策略,所以没有太大的压力让它发挥作用。

    【讨论】:

    • 有趣的是SBWatchpoint没有办法直接传入python回调函数,但是SBBreakpoint可以。
    • 不完全是。您可以传递函数名称或函数体,但不能传递函数对象。
    • 但是,是的,非常欢迎将这些相同规定扩展到 SBWatchpoint 的补丁
    猜你喜欢
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2012-08-04
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多