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 然后你将能够看到更深层次的变量。
假设这张图是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 然后你将能够看到更深层次的变量。