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

quhf5bfb  于 2022-11-30  发布在  其他
关注(0)|答案(4)|浏览(217)

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

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

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

fquxozlt

fquxozlt1#

配置打印字符串长度的功能最近被添加到delve中。

(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>

(dlv) config max-string-len 1000

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

oewdyzsn

oewdyzsn2#

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

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

yhived7q3#

除了上面的答案,为了在每次运行dlv时应用这些配置,您应该能够在(see the sourcecode)中找到配置文件:

  • $HOME/.dlv/config.yml在MacOS上为默认值
  • 在Linux上默认为$HOME/.dlv/config.yml。如果设置了$XDG_CONFIG_HOME,则它应该在$XDG_CONFIG_HOME/dlv/config.yml

例如,config.yml文件中的相关区域:
第一个

p5cysglq

p5cysglq4#

VSCode的Go调试工具

我需要查看大字符串。如果不推荐使用maxStringLendlvLoadConfig,我该如何查看?

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

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

如果这对您的使用情形来说还不够,或者您有任何其他反馈,请open an issue
来源

相关问题