golang / vscode-go

Go extension for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=golang.Go
Other
3.79k stars 729 forks source link

debug: Is there a way to step into a new coroutine when using a handler? #3181

Open jacksonfu opened 4 months ago

jacksonfu commented 4 months ago

Is your feature request related to a problem? Please describe. hi Sometime, dont clearly know which handler to call, so dont eaily to directly break at the func. VS Code Go extension:v0.41.0

type handler func(s string)
func myHandler(s string) {
    fmt.Println(s) // not stop at this line
}
func main() {
    h := handler(myHandler)
    go h("Hello, World!")// set a breakpoint on this line and use step into
    time.Sleep(8 * time.Second)// but stop at this line
}

issue1

Describe the solution you'd like

await call(sth)

Like debuging js through chrome, we can set a breakpoint either on await or on call. (Maybe inappropriate analogy)

Describe alternatives you've considered

  1. If there a viable alternative to jump through the value of variable. Also like debuging js through chrome, if the value is a callable obj, we can directly jump into the function and can also set the breakpoint. issue1

  2. If we can monitor when a new coroutine start to run.

Additional context It works fine if I use as follow:

go func(){
h("Hello, World!")}() // set breakpoint on this line, but kind of tedious

Many thanks to you!