如何在使用golang时,在VSCode的调试模式下传递命令行参数

34

我在使用VSCode(调试模式)与golang一起传递命令行参数时遇到了困难。

以下是一个小的代码示例和launch.json:

package main

import (
    "flag"
    "fmt"
)

func main() {
    flag1Ptr := flag.Bool("flag1", false, "flag1 is a flag")
    flag.Parse()
    fmt.Println(*flag1Ptr)
    fmt.Println("Hello, world")
}
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${fileDirname}",
            "env": {},
            "args": [
                "-flag1"
            ]
        }
    ]
}

对于*flag1Ptr,输出始终为“false”,但应为“true”。

更新:关闭VSCode并重新打开后问题消失(我使用的是Mac(osX))


我测试了你的代码,它对我有效。我使用VSCode调试器得到了true值。 - chmike
我已在Linux电脑上进行了测试。我没有Mac来测试它。 - chmike
我刚刚在启动文件中添加了 "trace": "log",但没有输出任何新内容。我怀疑我的设置没有运行 launch.json 文件。 - Dave_J
我不确定发生了什么事情(我关闭了VSCode并重新打开它),但它开始工作了。trace:log文件也开始工作了。 - Dave_J
我也经历过类似的事情。看起来在遇到意外情况时重新启动 vscode 是首要的事情。很高兴看到你解决了问题。 - chmike
显示剩余2条评论
1个回答

44

列出所有参数,例如,命令如下:

"hello.exe -in InfoEntity.java -out aa.out"

调试配置如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${fileDirname}",
            "env": {},
            "args": ["-in", "InfoEntity.java", "-out", "aa.out"]
        }
    ]
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接