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

GDB无法找到全部源文件的问题排查求助

GDB仅能找到部分源文件的排查与解决

一、查看GDB搜索源文件的尝试路径

要确认GDB是否尝试过搜索目标路径,可使用以下命令:

  • 启用 verbose 模式,GDB会输出所有寻找源文件的细节,包括每一次尝试的路径:
    set verbose on
    
    执行后切换到对应栈帧(比如frame 14)或执行list命令,就能在输出里看到GDB查找文件的全过程。
  • 查看当前配置的源文件搜索目录列表:
    show directories
    
  • 列出GDB已经成功找到的所有源文件:
    info sources
    

二、解决路径替换无效的方案

从栈帧输出看,部分文件调试信息记录的是相对路径(GDB能自动匹配到本地文件),另一部分是Jenkins编译机的绝对路径(本地不存在)。针对substitute-path无效的问题,试试以下步骤:

  1. 先清空已有路径替换规则,避免规则冲突:
    unset substitute-path /home/jenkins/workspace/Official_Builds_Pipeline/mclinux/src/
    unset substitute-path /home/jenkins/workspace/Official_Builds_Pipeline/mclinux/
    
  2. 重新设置替换规则,不要在路径末尾加斜杠,确保目标路径是本地真实存在的目录:
    set substitute-path /home/jenkins/workspace/Official_Builds_Pipeline/mclinux/src /home/user/mcgit/code/FMW-74565/coredumpout_16_29_52/mclinux/src
    
    GDB会按设置的顺序匹配路径,这条规则会把编译机上的绝对路径前缀替换为你的本地路径。
  3. 手动添加本地源文件根目录到GDB的搜索路径:
    directory /home/user/mcgit/code/FMW-74565/coredumpout_16_29_52/mclinux/src
    
  4. 额外检查:确认编译时使用了完整的调试信息参数-g(而非-g1,后者会丢失部分路径信息),同时确认编译时的工作目录是否统一——如果部分文件是在不同目录下编译的,调试信息里的路径格式会不一致,导致GDB匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:40:03