VSCode launch.json 参数带空格

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

我正在使用 VSCode 来调试我的 GoogleTest 测试套件,并且我有多个变量参数。问题是,当我传递带有空格的参数时,尽管不会产生错误,但不会考虑 arg。

要处理带有空格的参数的正确语法是什么?


以下是有关我使用的配置的一些信息:

launch.json :

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "TEST",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/tests/out/unit_tests",
            "args": [
                "--gtest_filter=${input:gtest filter}",
                "--gtest_repeat=${input:gtest repeat}",
                "${input:gtest opt}"
            ],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/tests/out",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ],
    "inputs": [
        {
            "id": "gtest filter",
            "description": "Input a filter string for Gtest test",
            "default": "*",
            "type": "promptString"
        },
        {
            "id": "gtest repeat",
            "description": "Input a repeat number for Gtest test",
            "default": "1",
            "type": "promptString"
        },
        {
            "id": "gtest opt",
            "description": "Shuffle and/or break",
            "default": "\\\"--gtest_break_on_failure --gtest_shuffle\\\"",
            "type": "pickString",
            "options": [
                "\\\"--gtest_shuffle --gtest_break_on_failure\\\"",
                "--gtest_shuffle",
                "--gtest_break_on_failure",
                "",
            ]
        }
    ]
}

问题是

${input:gtest opt}

手动执行:

foo@bar:~$ ./unit_tests --gtest_filter=m --gtest_repeat=1 --gtest_shuffle --gtest_break_on_failure
Note: Google Test filter = m
Note: Randomizing tests' orders with a seed of 94802 .
[==========] Running 0 tests from 0 test suites.
[==========] 0 tests from 0 test suites ran. (0 ms total)
[  PASSED  ] 0 tests.

从 VSCode 启动:

Note: Google Test filter = m
[==========] Running 0 tests from 0 test suites.
[==========] 0 tests from 0 test suites ran. (0 ms total)
[  PASSED  ] 0 tests.

如您所见,

"\\\"--gtest_shuffle --gtest_break_on_failure\\\""
已转义,但未由 GoogleTest 处理。我也尝试过使用简单的引号
"'--gtest_shuffle --gtest_break_on_failure'"
但没有成功。

visual-studio-code googletest vscode-debugger
1个回答
0
投票

您应该在参数中提供一个字符串而不是数组。例如:

"args": "--gtest_filter=${input:gtest filter} --gtest_repeat=${input:gtest repeat} ${input:gtest opt}",
© www.soinside.com 2019 - 2024. All rights reserved.