我正在使用Delve Go调试器来调试一些代码。当我尝试打印一个字符串变量时,它会给出缩写版本。
(dlv) print myString
"my string...+539 more"
如何让它打印完整的字符串?
最近在 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
应该会输出整个字符串。
补充你的回答,如果你正在使用VS Code调试功能,请在settings.json
中添加以下配置:
"go.delveConfig": {
"dlvLoadConfig": {
"maxStringLen": 1024,
},
"apiVersion": 2,
},
除了以上答案,要使这些配置每次运行dlv
时都应用,您应该能够在(查看源代码)中找到配置文件:
$HOME/.dlv/config.yml
$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
...
我需要查看大字符串。如果使用
maxStringLen
的dlvLoadConfig
已被弃用,我该怎么办?传统适配器使用
dlvLoadConfig
作为一次性会话范围的设置,以覆盖dlv的保守默认变量加载限制,旨在保护工具的性能。新的调试适配器采用了不同的方法,通过按需加载复合数据和更新的字符串限制来放松与单个字符串交互时的限制。特别是,如果应用于变量窗格中的所有字符串值的新默认限制为512,则可以利用以下其中之一的更大限制4096:
- 将鼠标悬停在源代码中的变量上
Copy as Expression
在DEBUG CONSOLE面板中查询字符串Copy Value
到剪贴板如果这对您的用例不足或您有任何其他反馈,请打开问题。
dlv
实例中运行config -save
(以保存您喜欢的配置值)。 - pestophagous