如何使用Visual Studio Code调试使用Google Test测试的应用程序?

时间:2018-03-29 12:37:08

标签: c++ visual-studio-code googletest

我想为我的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配置问题。

1 个答案:

答案 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和我的可执行文件之前解析了*