微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法为linux-vdso.so.1加载共享库符号 同时debugging

不加载VDSO.so是使用gdb和glibc> 2.2时遇到的着名错误之一。 我发现计划在gdb 7.5.1中修复,但事实并非如此。 好的,我在这里find了一个解决方法,但我不明白如何应用它。

操作系统:Arch Linux

IDE:QT创作者3.0.82

编译器:GCC 4.8.2

注:我不确定是否违反上述规定

我如何在GDB中使用shell命令的输出作为GDB命令的参数?

我如何让gdb忽略我的shell窗口的大小?

使用minidumps和GDB为mingw编译的可执行文件分析崩溃?

交叉debuggingRSEG1058连接到192.168.XXX.XXX取消

重载运行进程的符号(LD_PRELOAD附件)

不加载VDSO.so是使用gdb和glibc> 2.2时遇到的着名错误之一。

不, 不是的 。 这里的问题只是一个无用的警告,你可以放心地忽略。

在这里找到了一个解决方法,但是我不明白如何应用它。

您没有找到“解决方法”。 你找到了GDB的一个补丁,它禁用了警告。

要应用它,请使用patch命令,然后构建您自己的GDB。 但是,首先忽略警告就简单多了。

对于像我这样的人只是希望gdb关闭丢失的符号的人,可以尝试把它加入到~/.gdbinit (但是请看下面的注意事项):

set logging redirect on set logging file /dev/null python def on_new_objfile(e): gdb.execute("set logging off") #print "new objfile:",e.new_objfile.filename if e.new_objfile.filename[:19] == "system-supplied DSO": gdb.execute("set logging on") # hide inevitable error message gdb.events.new_objfile.connect(on_new_objfile) end

注意事项:

独占set logging界面; 如果你想使用日志记录,你需要改变它来保存以前的日志记录设置。

硬编码"system-supplied DSO" ; 新的内核或gdb版本可能会变得脆弱。

它假定在​​vdso 之后至少会加载一个obj文件以重新启用输出; 如果有更好的gdb内部知识的人可以指出实际的符号加载失败挂钩,我会非常感兴趣,因为现在当程序启动时,如果vdso是加载的最后一个obj文件,则会导致输出被禁用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐