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

GDB set substitute-path命令未生效,源文件路径替换失败求助

解决GDB中set substitute-path路径替换无效的问题

问题场景

调试ARM架构的.elf文件时,GDB尝试查找的源文件路径为C:\Users\user\Desktop\project\src/main.c,但实际源文件位于当前工作目录的./src/main.c,使用set substitute-path命令后路径替换未生效,执行list main仍提示找不到文件。

正确的路径替换操作步骤

1. 清理现有替换规则(可选但推荐)

如果之前设置过无效的规则,先清除避免干扰:

set substitute-path clear

2. 设置正确的替换规则

针对Windows路径,有两种可靠的写法:

写法一:使用正斜杠替代反斜杠(无需转义,更简洁)

set substitute-path C:/Users/user/Desktop/project ./

写法二:正确转义反斜杠(双反斜杠)

set substitute-path C:\\Users\\user\\Desktop\\project ./

注意:源路径不要加末尾斜杠——编译时记录的路径C:\Users\user\Desktop\project\src/main.c中,project后直接衔接src,所以源路径应设为C:\Users\user\Desktop\project(不带末尾斜杠),替换后才能得到正确的./src/main.c。

3. 验证替换规则

执行命令查看当前生效的规则:

show substitute-path

正常输出示例:

List of all source path substitution rules:
  `C:\Users\user\Desktop\project' -> `./'.

4. 测试路径替换

执行list main命令,此时GDB应能正确定位./src/main.c并显示代码。

额外排查点

  • 确保当前工作目录是.elf文件所在目录,且./src目录确实存在于当前工作路径下。
  • 用info sources命令查看GDB记录的所有源文件路径,确认编译时的路径与你设置的源路径完全匹配(注意大小写、斜杠类型)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:35:09