什么是gdb引用的“系统提供的DSO”?

时间:2012-05-08 19:23:25

标签: gdb llvm-gcc

我正在使用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找到调试符号的任何建议。

2 个答案:

答案 0 :(得分:4)

可以找到系统提供的DSO(也称为vdso)的良好说明here

答案 1 :(得分:0)

根据 this 文档,DSO 是:

<块引用>

动态共享对象 (DSO) 是一个对象文件,旨在 由多个应用程序同时使用或共享(a.out 文件) 当他们正在执行时。

我相信系统提供的 DSO 只是操作系统提供并由主可执行文件加载的 DLL。由于这是一个外部库,除非您单独下载它们,否则您没有此类对象的调试符号。通常,发布二进制文件会去除调试符号,但它们可以链接到单独的文件。典型的 Linux 发行版提供了一个包含此类二进制文件调试符号的包(如基于 RedHat 的发行版的 xxx-debuginfo-xxx.rpm)。