GDB - 如何查找堆栈帧的当前模块



使用 f stack_frame_number导航到堆栈帧后,如果调试信息存在且是最新的,我可能会看到它的源代码。无论如何,如何找出我当前的堆栈帧进入哪个模块?

例如

(gdb) print current_module
Your stack frame is in libTest.so.1

有什么办法可以做到这一点吗?

Gdb 提供符号$pc作为当前帧中指令指针的同义词。

您可以将它与 info symbol 命令一起使用,以显示与该帧对应的可执行文件或共享库:

(gdb) info symbol $pc
pause + 20 in section .text of /lib/x86_64-linux-gnu/libc.so.6
(gdb) up
(gdb) info symbol $pc
main + 9 in section .text of /home/mp/m