You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GDB执行info functions为何显示大量不属于当前二进制的多余函数

问题原因
  • 程序默认采用动态链接方式编译,运行时依赖系统标准C库(glibc),编译时加的-ggdb参数会保留所有关联二进制文件的调试符号。GDB执行info functions时默认会遍历所有已加载的符号表,包含C库内置的大量系统函数,因此会输出大量非自定义的函数信息。
解决方法

方法1:按源文件过滤(最常用)

直接在info functions后指定你的代码源文件名作为过滤条件,即可仅输出该文件中定义的自定义函数:

info functions calculator.c:

如果需要更灵活的匹配,也可以追加正则规则,比如匹配所有非下划线开头的函数:

info functions ^[^_]

方法2:关闭共享库符号自动加载

在启动程序前执行以下GDB命令,禁止自动加载共享库的调试符号,之后再查询函数就只会显示自有代码的函数:

set auto-solib-add off

该方案的弊端是后续调试标准库函数时不会显示对应符号信息,适合只需要调试自有代码的场景。

方法3:静态编译(可选)

如果不希望依赖动态库,编译时加上-static参数生成静态链接的二进制文件,此时程序不会关联动态C库,默认查询也不会出现系统库函数:

gcc -ggdb -static calculator.c -o calculator

该方案会让生成的二进制文件体积大幅增大,按需选择即可。

内容的提问来源于stack exchange,提问作者iamnoobv_1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 18:15:04