Windows环境下VS Code用gdb调试C程序时如何传入命令行参数获取argc、argv
Windows下VS Code搭配gdb调试传递命令行参数的解决方法
你当前的launch.json中args字段的写法本身是符合规范的,参数不生效可按以下步骤排查解决:
- 必须保存修改后的
launch.json:修改配置后按下Ctrl+S保存文件,否则VS Code调试时会读取旧的未修改的配置,导致参数不生效。 - 确认调试时的活跃文件是
test.c:你的配置中使用了${file}、${fileBasenameNoExtension}这类关联当前活跃编辑器文件的变量,如果当前打开的是launch.json或者其他无关文件,调试时会编译、调试其他文件的可执行程序,自然看不到为test.c配置的参数。 - 可选:固定调试目标文件避免活跃文件影响
如果你不想每次调试都要切换到test.c标签,可以修改配置固定目标程序路径:- 修改
launch.json的program字段为"${workspaceFolder}\\test.exe" - 修改
tasks.json中args数组的-o后面的路径为"${workspaceFolder}\\test.exe"
- 修改
- 如果以上操作后仍不生效,删除生成的
test.exe文件,重启VS Code后重新启动调试即可清除扩展缓存的旧配置。
修改后完整的可正常传递参数的launch.json示例如下:
{ "version": "0.2.0", "configurations": [ { "name": "gcc.exe - Build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": ["foo", "bar", "baz"], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: gcc.exe build active file" } ] }
内容的提问来源于stack exchange,提问作者M.E.
相关产品推荐
相关产品推荐

