当我从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"手动查找函数在内存中的范围,以确定它所在的库。
无论如何直接看图书馆没有这个手动过程?
答案 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