我想为我的C ++项目运行命令,例如./unittests_feature1 --gtest_filter = Feature1.test_int
使用Visual Studio Code Debugger。
在Visual Studio中设置调试器会话时,我的配置如下所示:
{
"name": "Test_int",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/unittests_feature1",
"args": ["--gtest_filter=Feature1.test_int"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
但是当我启动调试器时,它会运行unittests_feature1的所有内容,而不仅仅是Feature1.test_int。
如果我在命令行中手动运行:
gdb --args ./unittests_feature1 --gtest_filter = Feature1.test_int
它有效,因此可能会出现一些Visual Studio Code配置问题。
答案 0 :(得分:1)
我今天遇到了类似的问题,我想在这里发表一些经验来帮助您。
我正在使用WSL2 / Ubuntu和VSCode Remote-WSL调试带有GTest代码的C ++程序。 WSL2 / Ubuntu中的默认终端为zsh
。我想将参数"--gtest_filter=OneD*
传递给测试可执行文件。
对我来说,args
的{{1}}字段的成功配置是:
launch.json
有问题的配置示例包括:
"args": [
"--gtest_filter=OneD\\*"
],
[--gtest_filter=\"OneD\\*\"]
[--gtest_filter=\"OneD*\"]
似乎[--gtest_filter=OneD*]
对该问题做出了一些贡献,因为zsh
首先在gdb和我的可执行文件之前解析了*
。