我正在使用set verbose on
运行gdb,我正在尝试理解我收到的其中一条消息:
Reading symbols from system-supplied DSO at 0x7ffff7ffb000...(no debugging symbols found)...done.
什么是system-supplied DSO
?经过一些搜索后,我认为DSO
可能代表“动态共享对象”。但我仍然不明白gdb在这里做了什么,以及如何解决问题,找不到调试符号(或者甚至是否重要)。
我正在调试的程序正在使用llvm-gcc编译并且已经应用了LLVM传递。我认为这会影响gdb的行为,但我不确定如何。
基本上我的问题是gdb打印的消息意味着什么,是否可能导致问题,如果有的话,我可以帮助gdb找到调试符号的任何建议。
答案 0 :(得分:4)
可以找到系统提供的DSO(也称为vdso
)的良好说明here。
答案 1 :(得分:0)
根据 this 文档,DSO 是:
<块引用>动态共享对象 (DSO) 是一个对象文件,旨在 由多个应用程序同时使用或共享(a.out 文件) 当他们正在执行时。
我相信系统提供的 DSO 只是操作系统提供并由主可执行文件加载的 DLL。由于这是一个外部库,除非您单独下载它们,否则您没有此类对象的调试符号。通常,发布二进制文件会去除调试符号,但它们可以链接到单独的文件。典型的 Linux 发行版提供了一个包含此类二进制文件调试符号的包(如基于 RedHat 的发行版的 xxx-debuginfo-xxx.rpm)。