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

37

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

(dlv) print myString
"my string...+539 more"

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

4个回答

38

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

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

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

(dlv) config max-string-len 1000

现在运行print myString 应该会输出整个字符串。


23

补充你的回答,如果你正在使用VS Code调试功能,请在settings.json中添加以下配置:

    "go.delveConfig": {
        "dlvLoadConfig": {
            "maxStringLen": 1024,
        },
        "apiVersion": 2,
    },

11

除了以上答案,要使这些配置每次运行dlv时都应用,您应该能够在(查看源代码)中找到配置文件:

  • 默认情况下在MacOS上为$HOME/.dlv/config.yml
  • 默认情况下在Linux上为$HOME/.dlv/config.yml。如果设置了$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
...
Type 'help' for list of commands.
(dlv) config -list
...
max-string-len         1000
max-array-values       1000
...

6
您也可以在正在运行的dlv实例中运行config -save(以保存您喜欢的配置值)。 - pestophagous

1

VSCode的Go调试器

我需要查看大字符串。如果使用maxStringLendlvLoadConfig已被弃用,我该怎么办?

传统适配器使用dlvLoadConfig作为一次性会话范围的设置,以覆盖dlv的保守默认变量加载限制,旨在保护工具的性能。新的调试适配器采用了不同的方法,通过按需加载复合数据和更新的字符串限制来放松与单个字符串交互时的限制。特别是,如果应用于变量窗格中的所有字符串值的新默认限制为512,则可以利用以下其中之一的更大限制4096:

  • 将鼠标悬停在源代码中的变量上
  • Copy as Expression在DEBUG CONSOLE面板中查询字符串
  • Copy Value到剪贴板

如果这对您的用例不足或您有任何其他反馈,请打开问题

来源


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接