当我从 gdb 获取调用堆栈时,我只获取函数名和源文件信息。
(gdb) f
#0 main (argc=1, argv=0xbffff1d4) 在 main.c:5
我不知道该函数属于哪个共享库或应用程序。
在 Windows 上,Windbg 或 Visual Studio 将显示具有“myDll!myFunc”格式的调用堆栈,它向您显示该函数属于哪个模块。
目前在gdb中我使用“info address [function]”来获取函数符号的地址,然后使用“info share”手动查找函数在内存中的范围以确定它在哪个库中。
无论如何,无需此手动过程即可直接查看库?
最佳答案
您可以使用 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
关于gdb - 如何确定 gdb 中的函数属于哪个共享库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23779867/