在我的fedora盒子上,我安装了很多独立的调试信息。
sudo dnf debuginfo-install
<list of packets>
现在,如果我调试一些简单的代码,它需要很长时间,直到显示某个符号或打印一些值。很明显,绝对需要评估所有已安装的符号文件以获取所有信息。
但是如果我有问题,比如像goocanvas这样的lib我只想让我的本地调试smbol使用我自己编译的代码生成-g
选项而仅调试goocanvas libs的信息。
如何实现这种选择?只有重命名调试信息文件的文件夹并生成所需的副本?也许作为符号链接?或者在任何地方都有一个共同的选择选项吗?
答案 0 :(得分:2)
您可以跳过共享库中的所有调试信息,只加载goocanvas lib符号。以下是如何在gdb会话中执行此操作的示例:
[ ~]$ gdb -q /your/binary
(gdb) set auto-solib-add off
(gdb) start
Temporary breakpoint 1, 0x000055555564edd0 in main ()
(gdb) sharedlibrary goocanvas
来自gdb doc:
如果您的程序使用大量具有调试信息的共享库 占用大量内存,可以减少gdb内存 足迹,防止它自动加载符号 共享库。为此,请先键入set auto-solib-add 运行劣质,然后加载每个调试符号的库 需要使用sharedlibrary regexp,其中regexp是常规的 与您想要符号的库匹配的表达式 加载。
另请参阅此相关问题:How to prevent GDB from loading debugging symbol for a (large) library?