我正在使用VS代码编辑器编写CLI。我无法弄清楚如何调试代码段。
我的目录结构是:
- test
- main.go
- cmd
- login.go
- root.go
Can not debug non-main package
Process exiting with code: 1
test login
API server listening at: 127.0.0.1:48423
A longer description that spans multiple lines and likely contains
examples and usage of using your application. For example:
cd .
Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.
Usage:
test [command]
Available Commands:
help Help about any command
login A brief description of your command
Flags:
--config string config file (default is $HOME/.test.yaml)
-h, --help help for test
-t, --toggle Help message for toggle
Use "test [command] --help" for more information about a command.
main.go
文件package main
import "test/cmd"
func main() {
cmd.Execute()
}
login.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")
}
settings.json
{
"go.gopath":"/Users/deepakpatankar/go"
}
launch.json
{
// 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": []
}
]
}
请指导我如何在调试模式下查看变量值,例如变量名。尽管使用Println很好,但是此源代码是更大项目的一部分,所以我想看看如何使用调试器?
答案 0 :(得分:1)
您可以像这样在vscode设置中将标志添加到"args": []
数组中:
"args": ["login", "-u", "username", "-p", "password"]
这将确保您在运行调试时最终获得带有给定标志的login命令。
答案 1 :(得分:1)
如下修改您的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}",
...