我有一个带有简单设置的lldb python模块:
tempN
我可以使用以下方法在函数开头轻松设置断点:
def __lldb_init_module (debugger, dict):
target = debugger.GetSelectedTarget()
target.DeleteAllBreakpoints()
process = target.GetProcess()
我知道这是有效的,因为我的bp_hit函数被正确调用。
但是,我确实需要在functionName的地址开头设置X个字节的断点。如果我知道functionName的地址,我可以简单地将X添加到地址并使用BreakpointCreateByAddress。
什么是python代码,它将为我提供functionName的地址?
答案 0 :(得分:1)
使用SBTarget :: FindFunctions查找与您的函数名称匹配的SBSymbolContext。返回一个SBSymbolContext匹配列表(因为可能有多个匹配。)SBSymbolContext :: GetStartAddress将为您提供该符号开头的SBAddress。然后使用SBAddress :: OffsetAddress添加偏移量。有一个SBTarget :: CreateBreakpointByAddress但令人讨厌的是它只需要lldb :: addr_t而不是SBAddress。您可以从SBAddress获取lldb :: addr_t,并在目标中传入SBAddress :: GetLoadAddress()。
答案 1 :(得分:0)
Jim的回答是使用SBTarget的FindSymbols功能。