Ubuntu Can';t在gdb中打印错误,抱怨缺少共享库,但它存在
调试应用程序时,如果我中断GDB并尝试打印errno,即使是从检查errno的函数内部,我也会从GDB收到以下错误:Ubuntu Can';t在gdb中打印错误,抱怨缺少共享库,但它存在,ubuntu,gdb,shared-libraries,libc,errno,Ubuntu,Gdb,Shared Libraries,Libc,Errno,调试应用程序时,如果我中断GDB并尝试打印errno,即使是从检查errno的函数内部,我也会从GDB收到以下错误: (gdb) print errno Cannot find shared library `/usr/lib/debug/lib/libc-2.11.1.so' in dynamic linker's load module list 我尝试过的事情: 检查文件是否存在,它确实存在并且大约为7.3MB 将/usr/lib/debug/lib/添加到我的LD_LIBRARY_路径
(gdb) print errno
Cannot find shared library `/usr/lib/debug/lib/libc-2.11.1.so' in dynamic linker's load module list
我尝试过的事情:
应用程序在其他方面似乎运行良好,因此我无法想象libc本身会出问题。有什么想法吗?文件
/usr/lib/debug/lib/libc-2.11.1。因此
不包含glibc的调试版本。它只包含libc的调试部分,但没有实际的可执行代码。将其放入LD\u预加载
或LD\u库路径
是错误的。不要那样做
您可以阅读关于单独调试文件的内容
(gdb)打印错误号在动态链接器的加载模块列表中找不到共享库“/usr/lib/debug/lib/libc-2.11.1.so” 这是GDB中的小号 您应该知道GDB将查找变量
errno
,但您的应用程序不使用任何此类变量。相反,errno
是一个#define
d宏,它扩展到*(\uu errno\u location())
,GDB对此一无所知
请尝试以下方法:
(gdb) p __errno_location()
$1 = (int *) 0x7ffff78396a8
(gdb) x/x $1
0x7ffff78396a8: 0x00000000
看起来您的shell启动文件正在破坏LD_LIBRARY_路径。检查这个链接,[.Hope有用。@SunEric:AFAICT,像/usr/lib这样的系统路径总是自动搜索的。另外,我在#2中指出,显式地将路径添加到LD#u LIBRARY#path并不能修复错误。