在 LLDB 中,您可以在调试会话期间执行以下操作,以在特定地址添加丢失的符号:
target modules load --file <symbol file> .text 0x<address>
如何使用 LLDB Python 脚本模块来做到这一点?我查遍了API也没找到对应的方法。
我想通了。您可以使用
debugger.HandleCommand
来运行任意 LLDB 命令。我解决这个问题的一般方法是定义并注册一个可以在 LLDB 调试会话期间调用的函数。
例如:
def load_libraries(debugger, command, result, internal_dict):
print(f"image add some_library.so", flush=True)
debugger.HandleCommand(f"image add some_library.so")
print(f"target modules load --file some_library.so .text 0x<some address>", flush=True)
debugger.HandleCommand(f"target modules load --file some_library.so .text 0x<some address>")