不加载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] 举报,一经查实,本站将立刻删除。