【问题标题】:How to pass command-line arguments to debugger using VSCode?如何使用 VSCode 将命令行参数传递给调试器?
【发布时间】:2019-11-13 00:51:12
【问题描述】:

我在 Linux 上使用 VSCode,我想出了以下启动配置来尝试触发 VSCode 调试器,而这反过来又依赖于 gdb

{
    "version": "0.2.0",
    "configurations": [
    {
        "name": "(gdb) Launch",
        "type": "cppdbg",
        "request": "launch",
        "program": "${fileDirname}/${fileBasenameNoExtension}",
        "args": ["a", "b", "c", "d", "e"],
        "stopAtEntry": false,
        "cwd": "${fileDirname}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
            {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ],
        "preLaunchTask": "make project"
    }]

}

在这里,使用args 属性,我想将 5 个参数传递给我正在调试的进程,即:“a”、“b”、“c”、“d”、“e”。

但是,当我运行调试器时,argc 值被正确设置为 6,但由argv 存储的值本身不存在。

【问题讨论】:

标签: debugging visual-studio-code gdb


【解决方案1】:

那是因为 argv 的类型是 char**。调试器不知道它是指向单个元素还是数组。

在 VS 中,您可以使用格式说明符。 使用 gdb,您应该可以在 Watch 视图中使用类似的内容:

(char*[6])argv

https://github.com/Microsoft/vscode-cpptools/issues/688#issuecomment-685956825

【讨论】:

    【解决方案2】:

    第一个参数始终是可执行文件。这是预期的行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      相关资源
      最近更新 更多