如何确定gdb中函数所属的共享库?

时间:2014-05-21 09:58:44

标签: gdb shared-libraries callstack

当我从gdb获取callstack时,我只获取函数名和源文件信息。

(gdb) f
#0  main (argc=1, argv=0xbffff1d4) at main.c:5

我无法获得该功能所属的共享库或应用程序。

在Windows上,Windbg或Visual Studio将使用" myDll!myFunc"显示callstacks。 format,显示函数所属的模块。

目前在gdb中我使用"信息地址[功能]"获取函数符号的地址,然后使用" info share"手动查找函数在内存中的范围,以确定它所在的库。

无论如何直接看图书馆没有这个手动过程?

1 个答案:

答案 0 :(得分:12)

您可以使用info symbol。它打印一个函数的库名。

像这样:

(gdb) info symbol f
f(double) in section .text of libmylib_gcc.so

(gdb) info symbol printf
printf in section .text of /lib64/libc.so.6