我正在尝试将命令行参数传递给 vscode 中的 gdb。这是我的 launch.js 配置。
{
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/main",
"args": ["1"],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
这是文件和文件夹结构。
这是简单的健全性检查代码
#include<stdio.h>
int main(int argc, char* argv[])
{
printf("argc == %d\n", argc);
return 0;
}
它的输出是
argc == 1
我无法捕捉争论。请帮忙。
似乎当点击vscode中提供的右上角的按钮时,它没有按照launch.json配置中提供的配置运行。要运行它,请转到右侧工具栏并单击调试按钮。然后选择 (gdb) lauch.json 选项并运行它。然后你的代码将按照 launch.json 运行。
在 vscode/vscodium 中将参数传递给 gdb 的最简单方法是使用具有如下启动配置的本机调试扩展
{
"type": "gdb",
"request": "launch",
"name": "Debug with gdb",
"target": "./programname",
"arguments": "some_program_argument",
"cwd": "${workspaceFolder}/bin",
"valuesFormatting": "parseText"
}
仅供比较,lldb 对应的配置是
{
"type": "lldb",
"request": "launch",
"name": "Debug with lldb)",
"program": "./programname",
"args": ["some_program_argument"],
"cwd": "${workspaceFolder}/bin"
}
由于某种原因,gdb 与 lldb 的语法不同,前者需要
target
/arguments
,后者需要 program
/args
。