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

问题描述 投票:3回答:1

我想为我的C++项目运行一个命令,如.unittests_feature1 --gtest_filter=Feature1.test_int。

使用Visual Studio代码调试器。

当在Visual Studio中设置调试器会话时,我的配置是这样的,但当我启动Debugger时,它运行了unittests_feature1的所有内容,而不是Feature1.test_int。

{
   "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
      }
    ]
}

但是当我启动Debugger时,它运行了unittests_feature1的所有内容,而不仅仅是Feature1.test_int.

如果我在命令行中手动运行

gdb --args .unittests_feature1 --gtest_filter=Feature1.test_int。

它可以工作,所以一些Visual Studio Code的配置可能是问题所在。

c++ visual-studio-code googletest
1个回答
0
投票

我今天遇到了一个类似的问题,我想在这里发一些经验来帮助大家。

我是用WSL2Ubuntu &VSCode Remote-WSL来调试一个带有GTest代码的C++程序。WSL2Ubuntu的默认终端是 zsh. 我想通过参数 "--gtest_filter=OneD* 到测试可执行文件。

对我来说,成功配置的 args 的领域 launch.json 是。

            "args": [
                "--gtest_filter=OneD\\*"
            ],

问题配置的例子包括:

  • [--gtest_filter=\"OneD\\*\"]
  • [--gtest_filter=\"OneD*\"]
  • [--gtest_filter=OneD*]

似乎... zsh 导致了这个问题,因为 * 通过以下方式进行解析 zsh 首先在gdb &我的可执行文件之前。

© www.soinside.com 2019 - 2024. All rights reserved.