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

Dea*_*ean 2 linux debugging stack gdb

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

例如

(gdb) print current_module
Your stack frame is in libTest.so.1
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ick 6

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
Run Code Online (Sandbox Code Playgroud)