我正在运行 gdb,并且set verbose on试图理解收到的消息之一:
Reading symbols from system-supplied DSO at 0x7ffff7ffb000...(no debugging symbols found)...done.
Run Code Online (Sandbox Code Playgroud)
是什么system-supplied DSO?经过一番搜索,我认为这DSO可能代表“动态共享对象”。但我仍然不明白 gdb 在这里做什么以及如何解决找不到调试符号的问题(或者如果它甚至很重要)。
另外,我正在调试的程序正在使用 llvm-gcc 进行编译,并应用了 LLVM pass。我认为这会影响 gdb 的行为,但我不确定如何影响。
所以本质上我的问题是 gdb 打印的消息意味着什么,它是否可能导致问题,如果是的话,有什么建议可以帮助 gdb 找到调试符号。
根据该文件,DSO 是:
\n\n\n动态共享对象 (DSO) 是一个对象文件,\xe2\x80\x99 旨在由多个应用程序(a.out 文件)\n同时使用\xe2\x80\x94 或共享\xe2\x80\x94\n xe2\x80\x99正在执行。
\n
我相信系统提供的 DSO 只是操作系统提供的 DLL,并由主可执行文件加载。由于这是一个外部库,因此您没有此类对象的调试符号,除非您单独下载它们。通常,发布二进制文件会删除调试符号,但它们可以具有指向单独文件的链接。典型的 Linux 发行版提供了一个包含此类二进制文件的调试符号的包(例如基于 RedHat 的发行版的 xxx-debuginfo-xxx.rpm)。
\n