【问题标题】:select subset of debug info files in gdb session在 gdb 会话中选择调试信息文件的子集
【发布时间】:2016-12-07 16:54:09
【问题描述】:

在我的 Fedora 盒子上,我安装了很多单独的调试信息。

sudo dnf debuginfo-install <list of packets>

现在,如果我调试一些简单的代码,它需要很长时间才能显示一些符号或打印一些值。很明显,评估所有已安装的符号文件以获取所有信息是绝对需要的。

但是,如果我有问题,比如在 goocanvas 之类的库上,我只想使用我自己的编译代码生成本地调试符号,并使用 -g 选项和 only 的调试信息goocanvas 库。

如何实现这种选择?仅通过重命名调试信息文件的文件夹并生成所需文件的副本?也许作为符号链接?还是在任何地方都有一个通用的选择选项?

【问题讨论】:

    标签: debugging gdb


    【解决方案1】:

    您可以跳过共享库中的所有调试信息,只加载 goocanvas 库符号。以下是如何在 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 off 运行下级,然后加载您的调试符号的每个库 确实需要共享库正则表达式,其中正则表达式是常规的 与您想成为其符号的库匹配的表达式 已加载。

    另请参阅此相关问题:How to prevent GDB from loading debugging symbol for a (large) library?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 2012-05-27
      • 2012-09-08
      • 2015-03-23
      相关资源
      最近更新 更多