LLDB:使用python api在函数开始的偏移量处设置断点

LLDB:使用python api在函数开始的偏移量处设置断点,python,scripting,lldb,Python,Scripting,Lldb,我有一个带有简单设置的lldb python模块: def __lldb_init_module (debugger, dict): target = debugger.GetSelectedTarget() target.DeleteAllBreakpoints() process = target.GetProcess() 我可以使用以下方法在函数开始时轻松设置断点: breakpoint = target.BreakpointCreateByName("funct

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

def __lldb_init_module (debugger, dict):
    target = debugger.GetSelectedTarget()
    target.DeleteAllBreakpoints()
    process = target.GetProcess()
我可以使用以下方法在函数开始时轻松设置断点:

breakpoint = target.BreakpointCreateByName("functionName", "moduleName")
breakpoint.SetScriptCallbackFunction( "python_module.bp_hit" )
我知道这是可行的,因为我的bp_hit函数调用正确

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


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

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

Jim回答的另一种方法是使用SBTarget的FindSymbols函数