Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VS代码中除main.go以外的调试文件_Go_Visual Studio Code_Delve_Go Cobra - Fatal编程技术网

VS代码中除main.go以外的调试文件

VS代码中除main.go以外的调试文件,go,visual-studio-code,delve,go-cobra,Go,Visual Studio Code,Delve,Go Cobra,我正在使用VS代码编辑器在go中编写CLI。我不知道如何调试代码段 我的目录结构是: - test - main.go - cmd - login.go - root.go 我在login.go中设置了断点,但如果在此文件中运行启动调试,则会出现错误 我尝试在main.go中运行调试器,但调试器不会转到login.go文件,因为我们没有显式编写测试登录 main.go文件 login.go文件 settings.json launch.json 请指导我如何在调试模式下

我正在使用VS代码编辑器在go中编写CLI。我不知道如何调试代码段

我的目录结构是:

- test
  - main.go
  - cmd
    - login.go
    - root.go
我在login.go中设置了断点,但如果在此文件中运行启动调试,则会出现错误 我尝试在main.go中运行调试器,但调试器不会转到login.go文件,因为我们没有显式编写测试登录 main.go文件 login.go文件 settings.json launch.json 请指导我如何在调试模式下查看变量值,如变量名。虽然使用Println很好,但此源代码是一个更大项目的一部分,因此我想看看如何使用调试器?

您可以在vscode设置中向args:[]数组添加标志,如下所示:

"args": ["login", "-u", "username", "-p", "password"]
这将确保在运行debug时,登录命令中包含给定的标志。

修改launch.json,如下所示:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "${workspaceRoot}",
            "env": {},
            "args": [],
            "port": 8080,
            "host": "127.0.0.1"
        }
    ]
}
你会发现你和你的有些不同

...
"mode": "debug",
"program": "${workspaceRoot}",
...

你能添加你的.vscode设置吗?谢谢Blokje5,这个解决方案适合我。我在launch.json中添加了上述给定行。嘿,阿里,谢谢你的回答。现在使用您的建议,我不需要在启动调试器之前转到main.go。很高兴它对您有所帮助
package cmd

import (
    "fmt"
    "github.com/spf13/cobra"
)

// loginCmd represents the login command
var loginCmd = &cobra.Command{
    Run: func(cmd *cobra.Command, args []string) {
        fmt.Println("login called")
        name, _ := cmd.Flags().GetString("username")
        pwd, _ := cmd.Flags().GetString("password")
        userInfo := name + ":" + pwd
    },
}

func init() {
    rootCmd.AddCommand(loginCmd)

    // Here you will define your flags and configuration settings.
    loginCmd.Flags().StringP("username", "u", "", "Specifies the user")
    loginCmd.Flags().StringP("password", "p", "", "Specifies the password for the user")
    loginCmd.Flags().StringP("manager", "m", "", "Specifies the environement where user wants to login")
}
{
    "go.gopath":"/Users/deepakpatankar/go"
}
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${fileDirname}",
            "env": {},
            "args": []
        }
    ]
}
"args": ["login", "-u", "username", "-p", "password"]
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "${workspaceRoot}",
            "env": {},
            "args": [],
            "port": 8080,
            "host": "127.0.0.1"
        }
    ]
}
...
"mode": "debug",
"program": "${workspaceRoot}",
...