1
查看SBWatchpoint的文檔http://lldb.llvm.org/python_reference/index.html,我沒有看到爲觸發觀察點時分配python回調函數的方法。LLDB:觀察點的Python API和設置回調函數
有沒有辦法用Python API來做到這一點?
查看SBWatchpoint的文檔http://lldb.llvm.org/python_reference/index.html,我沒有看到爲觸發觀察點時分配python回調函數的方法。LLDB:觀察點的Python API和設置回調函數
有沒有辦法用Python API來做到這一點?
有是支持這樣做
watchpoint command add [-e <boolean>] [-s <none>] [-F <python-function>] <watchpt-id>
如果你有一個SBWatchpoint,您可以查詢它的ID,然後手藝適當的命令行向下傳遞給
watchpoint command add
命令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卻有。 – ericg
不完全。您可以傳遞函數名稱或函數體,但不能傳遞函數對象。 –
但是,是的,將這些相同條款擴展到SBWatchpoint的補丁將非常受歡迎 –