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

如何在GDB中查找指定代码或函数所属的共享对象名称

GDB 中根据源码行号定位所属共享对象的操作方法

最简便的操作步骤

适用于已知源码文件名和对应行号的场景:

  1. 执行GDB命令 info line 源码文件名:行号,例如你已知行号信息为transport.c:187,则输入:
    info line transport.c:187
  2. 命令返回结果会直接显示该行代码对应的指令起始地址,以及所属的共享对象完整路径。如果输出中没有直接显示共享对象信息,取返回的指令地址,执行:
    info symbol 指令地址
    返回结果中of后面的内容就是对应的共享对象路径。

栈回溯场景的更快捷操作

如果你是在backtrace输出中看到的未知源码行,无需手动输入文件名和行号,直接按如下操作:

  • 先切换到对应栈帧,例如对应帧编号为3,执行 f 3
  • 再执行 info frame,输出结果中的library字段即为该栈帧代码所属的共享对象路径

示例操作

假设backtrace输出如下:

#3 0x00007ffff7f68129 in init (x=0x5555555692a0) at transport.c:187
执行命令info line transport.c:187,返回示例:
Line 187 of "transport.c" starts at address 0x7ffff7f68120 <init+16> and ends at 0x7ffff7f68135 <init+37>.
Located in /usr/local/lib/libusb-1.0.so
即可直接得到对应共享库为/usr/local/lib/libusb-1.0.so。

注意事项

查询前需确保对应共享对象已经被动态加载到进程地址空间,如果查询返回无结果,可以先对目标行号打临时断点,触发断点后再执行上述查询操作即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:54:00