LLDB:使用pythonapi在函数开始偏移处设置断点

2024-10-03 09:10:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有简单设置的lldb python模块:

def __lldb_init_module (debugger, dict):
    target = debugger.GetSelectedTarget()
    target.DeleteAllBreakpoints()
    process = target.GetProcess()

我可以很容易地在函数开始处设置断点:

^{pr2}$

我知道这是可行的,因为我的bp_hit函数调用正确。在

但是,我确实需要将断点设置为从functionName的地址开始的X字节数。如果我知道函数名的地址,我可以简单地将X添加到地址并使用BreakpointCreateByAddress。在

提供函数名地址的python代码是什么?在


Tags: 模块函数targetinit地址defdebuggerprocess
2条回答

使用SBTarget::FindFunctions查找与函数名匹配的SBSymbolContext。返回SBSymbolContext匹配项的列表(因为可能有多个匹配项)。SBSymbolContext::GetStartAddress将为该符号的开头提供一个SBAddress。然后使用SBAddress::OffsetAddress添加偏移量。有一个SBTarget::CreateBreakpointByAddress,但令人厌烦的是,它只需要lldb::addr而不是SBAddress。通过SBAddress::GetLoadAddress()传入目标,可以从SBAddress获取lldb::addr\t。在

Jim的另一个答案是使用SBTarget的FindSymbols函数。在

相关问题 更多 >