在我的 Fedora 盒子上我安装了很多单独的调试信息。
sudo dnf debuginfo-安装<list of packets>
现在,如果我调试一些简单的代码,则需要很长时间才能显示某些符号或打印某些值。很明显,绝对需要评估所有已安装的符号文件才能获取所有信息。
但是如果我有问题,比如说在像 goocanvas 这样的库上,我只想用我自己编译的代码生成本地调试符号-g
选项和onlygoocanvas 库的调试信息。
如何才能实现这样的选择呢?仅通过重命名调试信息文件的文件夹并生成所需文件的副本?也许作为符号链接?或者是否有通用的选择选项?
您可以跳过共享库中的所有调试信息,只加载 goocanvas lib 符号。以下是如何在 gdb 会话中执行此操作的示例:
[ ~]$ gdb -q /your/binary
(gdb) set auto-solib-add off
(gdb) start
Temporary breakpoint 1, 0x000055555564edd0 in main ()
(gdb) sharedlibrary goocanvas
From gdb doc https://sourceware.org/gdb/onlinedocs/gdb/Files.html#Files:
如果您的程序使用大量带有调试信息的共享库
占用大量内存,可以减少gdb内存
足迹通过防止它自动加载符号
共享库。为此,请在之前输入 set auto-solib-add off
运行下级,然后加载您调试符号的每个库
确实需要共享库正则表达式,其中正则表达式是常规的
与您想要成为其符号的库相匹配的表达式
已加载。
另请参阅此相关问题:如何防止 GDB 加载(大型)库的调试符号? https://stackoverflow.com/questions/31763639/how-to-prevent-gdb-from-loading-debugging-symbol-for-a-large-library
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)