如何在 delve 中打印字符串变量的完整值?

Ale*_*air 23 debugging go delve

我正在使用 delve go 调试器来调试一些代码。当我尝试打印字符串变量时,它给了我一个缩写版本。

(dlv) print myString
"my string...+539 more"
Run Code Online (Sandbox Code Playgroud)

我如何让它打印完整的字符串?

rus*_*tyx 20

只是为了添加到您的答案,如果您使用VS Code调试功能,请将以下配置添加到您的settings.json

    "go.delveConfig": {
        "dlvLoadConfig": {
            "maxStringLen": 1024,
        },
        "apiVersion": 2,
    },
Run Code Online (Sandbox Code Playgroud)


Ale*_*air 18

配置打印字符串长度的功能最近添加到了 delve。要查看配置选项的完整列表,请运行config -list

(dlv) config -list
aliases            map[]
substitute-path    []
max-string-len     <not defined>
max-array-values   <not defined>
show-location-expr false
Run Code Online (Sandbox Code Playgroud)

我们在这里感兴趣的称为max-string-len,您可以看到当前是<not defined>。要将长度增加到例如 1000,请运行

(dlv) config max-string-len 1000
Run Code Online (Sandbox Code Playgroud)

现在运行print myString应该打印整个字符串。


小智 7

添加到上述答案中,要在每次运行时应用这些配置dlv,您应该能够在(请参阅源代码)中找到配置文件:

  • $HOME/.dlv/config.yml 默认情况下在 MacOS 上
  • $HOME/.dlv/config.yml默认在 Linux 上。如果$XDG_CONFIG_HOME设置,那么它应该在$XDG_CONFIG_HOME/dlv/config.yml

例如config.yml文件中的相关区域:

...
# Maximum number of elements loaded from an array.
max-array-values: 1000

# Maximum loaded string length.
max-string-len: 1000
...
Run Code Online (Sandbox Code Playgroud)
Type 'help' for list of commands.
(dlv) config -list
...
max-string-len         1000
max-array-values       1000
...
Run Code Online (Sandbox Code Playgroud)

  • 您还可以从正在运行的“dlv”实例内部运行“config -save”(一旦您按照自己喜欢的方式获取配置值,即可保存它们) (3认同)