Gdb 如何找到函数';使用lldb的内存地址?

Gdb 如何找到函数';使用lldb的内存地址?,gdb,lldb,Gdb,Lldb,在GDB中,我可以使用“info line func_name”获取func_name的内存地址,然后使用“set$PC=memory_address”开始调试此函数。如何在lldb中执行相同的操作?提前谢谢 lldb中的命令是“图像查找”。我认为最近在lldb/gdb命令页中添加了一个“info func”“image lookup”的示例- e、 g 虽然这里只显示libsystem_c.dylib中的偏移量(0x11d9a)——要查看实际加载地址,您需要使用“-v”选项进行图像查找,该选项

在GDB中,我可以使用“info line func_name”获取func_name的内存地址,然后使用“set$PC=memory_address”开始调试此函数。如何在lldb中执行相同的操作?提前谢谢

lldb中的命令是“图像查找”。我认为最近在lldb/gdb命令页中添加了一个“info func”“image lookup”的示例-

e、 g

虽然这里只显示libsystem_c.dylib中的偏移量(0x11d9a)——要查看实际加载地址,您需要使用“-v”选项进行图像查找,该选项将显示放置封套的地址范围。或者,您可以更直接地使用lldb中的倒勾符号

(lldb) reg read pc
     rip = 0x0000000100000f2b  a.out`main + 11 at a.c:3
(lldb) reg write pc `(void(*)())puts`
(lldb) reg read pc
     rip = 0x00007fff99ce1d9a  libsystem_c.dylib`puts
好的,我必须强制转换puts(),因为lldb需要一个函数原型——这不是非常方便,但如果它是您自己的函数之一,则不需要:

(lldb) reg write pc `main`
(lldb) reg read pc
     rip = 0x0000000100000f20  a.out`main at a.c:2
(lldb) reg write pc `main`
(lldb) reg read pc
     rip = 0x0000000100000f20  a.out`main at a.c:2