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
相关产品推荐
相关产品推荐

