Windows下VSCode调试Rust时GDB单步进入提示文件不存在
Windows下VS Code调试Rust时GDB单步进入(F11)提示文件不存在的解决方法
核心原因
F11(单步进入)会尝试跳转到函数实现的源码文件,但GDB无法匹配编译时记录的类Unix风格路径与本地Windows实际路径;而F10(单步跳过)和F5(继续)不需要加载深层源码文件,因此能正常工作。
GDB命令级解决方法
设置路径映射:在GDB控制台执行,将编译时的路径替换为本地实际路径
set substitute-path /rustc/[编译时的版本哈希]/src/rust C:\Users\你的用户名\.rustup\toolchains\stable-x86_64-pc-windows-gnu\lib\rustlib\src\rust\src可先通过
info breakpoint查看断点对应的文件路径,确认需要替换的前缀。添加源码搜索目录:手动将项目源码和Rust标准库源码目录加入GDB的搜索路径
directory ${workspaceFolder}/src directory C:\Users\你的用户名\.rustup\toolchains\stable-x86_64-pc-windows-gnu\lib\rustlib\src\rust\src
持久化配置(VS Code launch.json)
如果不想每次调试都手动输入命令,可以在.vscode/launch.json的setupCommands中添加配置,自动执行路径映射:
{ "version": "0.2.0", "configurations": [ { "name": "Rust Debug", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/target/debug/your_project_name.exe", "args": [], "stopAtEntry": true, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "gdb.exe", "setupCommands": [ { "description": "映射Rust标准库源码路径", "text": "set substitute-path /rustc/${env:RUSTUP_TOOLCHAIN}/src/rust C:\\Users\\你的用户名\\.rustup\\toolchains\\${env:RUSTUP_TOOLCHAIN}\\lib\\rustlib\\src\\rust\\src", "ignoreFailures": false }, { "description": "添加项目源码目录", "text": "directory ${workspaceFolder}/src", "ignoreFailures": false } ] } ] }
内容的提问来源于stack exchange,提问作者mgrs_
相关产品推荐
相关产品推荐

