我有一个带有简单设置的lldb python模块:
def __lldb_init_module (debugger, dict):
target = debugger.GetSelectedTarget()
target.DeleteAllBreakpoints()
process = target.GetProcess()
我可以很容易地在函数开始处设置断点:
^{pr2}$我知道这是可行的,因为我的bp_hit函数调用正确。在
但是,我确实需要将断点设置为从functionName的地址开始的X字节数。如果我知道函数名的地址,我可以简单地将X添加到地址并使用BreakpointCreateByAddress。在
提供函数名地址的python代码是什么?在
使用SBTarget::FindFunctions查找与函数名匹配的SBSymbolContext。返回SBSymbolContext匹配项的列表(因为可能有多个匹配项)。SBSymbolContext::GetStartAddress将为该符号的开头提供一个SBAddress。然后使用SBAddress::OffsetAddress添加偏移量。有一个SBTarget::CreateBreakpointByAddress,但令人厌烦的是,它只需要lldb::addr而不是SBAddress。通过SBAddress::GetLoadAddress()传入目标,可以从SBAddress获取lldb::addr\t。在
Jim的另一个答案是使用SBTarget的FindSymbols函数。在
相关问题 更多 >
编程相关推荐