VSCode 当 运行 一个 golang 调试器时,调试不在 VARIABLES 区域显示映射值

VSCode debug not display map values in VARIABLES area when running a golang debugger

假设这张图是s.S.Data,说明图的长度是2,只是什么都不显示。当我在 WATCH 区域添加表达式 s.S 时,它显示正确。

有样本:

package main

import (
    "fmt"
)

type Some struct {
    ID   int
    Data map[string]string
    S    *Some
}

func Print(s Some) {
    var t Some
    t = s // Breakpoint
    fmt.Println(t)
    if t.S != nil {
        fmt.Println(t.S)
    }
}

func main() {
    s := Some{
        ID: 2333,
        Data: map[string]string{
            "1": "A",
            "2": "B",
        },
    }
    ss := Some{
        ID: 7777,
        S:  &s,
    }
    Print(ss)
    fmt.Println("Hello, playground")
}

有什么方法可以让它在VARIABLES区正确显示吗?

tl;dr: 设置 go.delveConfig.dlvLoadConfig.maxVariableRecurse 除了 1.

更多详情:

打开首选项并输入 delve,然后按 Edit in settings.json

(注意:如果您选择“用户”选项卡,它将应用于所有 VSCode 个项目,否则将仅应用于此项目。)

之后 settings.json 将用空 JSON 对象打开。写下 go.d 然后应该会弹出 go.delveConfig 的自动完成。

按回车键,您将获得 delve 的样板设置,这是 VSCode 使用的 GoLang 调试器。编辑 "maxVariableRecurse" 键的值而不是 1 然后你将能够看到更深层次的变量。