无法在 Go 调试器中调用函数

Eli*_*mar 6 go visual-studio-code delve

我正在关注 Karl Seguin 的“小围棋书”,以学习围棋。

我的工作环境是 Visual Studio Code。

在调试时,当我尝试从调试控制台调用一个函数时,我收到以下错误:“函数调用不允许不使用 'call'”,如果我尝试使用“call fib(10)”,我得到“无法eval 表达式:“1:6:预期的‘EOF’,发现 fib”。这是我试图评估的函数:

//Fibonnaci
func fib(n int) int64 {
    if n == 0 {
        return 0
    } else if n == 1 {
        return 1
    } else {
        return fib(n-1) + fib(n-2)
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试从代码本身调用该函数(例如从 main() 调用,它可以完美运行)。

但是,如果我设置断点并尝试从调试器控制台调用相同的函数,则会出现以下错误:

Eval error: function calls not allowed without using 'call'
call fib(10)
Unable to eval expression: "1:6: expected 'EOF', found fib"
Failed to eval expression:  {
 "Expr": "call fib(10)",
 "Scope": {
  "goroutineID": 1,
  "frame": 0
 },
 "Cfg": {
  "followPointers": true,
  "maxVariableRecurse": 1,
  "maxStringLen": 64,
  "maxArrayValues": 64,
  "maxStructFields": -1
 }
} 
Run Code Online (Sandbox Code Playgroud)

And*_*nko 4

看起来像“不支持通过 delve 'call' 进行函数调用”,但microsoft/vscode-go 存储库中的github问题:(

  • @GrantBirchmeier 这并不重要,因为所有 go UI 调试器都在底层使用 delve。我证明了它在控制台调试器模式下运行良好。 (2认同)