我正在使用delve go调试器调试一些代码。当我试图打印一个字符串变量时,它给了我一个缩写版本。
(dlv) print myString "my string...+539 more"
如何让它打印完整的字符串?
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>。
max-string-len
<not defined>
(dlv) config max-string-len 1000
现在运行print myString应该打印整个字符串。
print myString
oewdyzsn2#
为了补充您的答案,如果您使用VS Code调试功能,请将以下配置添加到您的settings.json:
settings.json
"go.delveConfig": { "dlvLoadConfig": { "maxStringLen": 1024, }, "apiVersion": 2, },
yhived7q3#
除了上面的答案,为了在每次运行dlv时应用这些配置,您应该能够在(see the sourcecode)中找到配置文件:
dlv
$HOME/.dlv/config.yml
$XDG_CONFIG_HOME
$XDG_CONFIG_HOME/dlv/config.yml
例如,config.yml文件中的相关区域:第一个
config.yml
p5cysglq4#
maxStringLen
dlvLoadConfig
旧版适配器使用dlvLoadConfig作为一次性会话范围设置来覆盖dlv的保守默认变量加载限制,以保护工具的性能。新的调试适配器采用不同的方法,按需加载复合数据和更新的字符串限制,在与单个字符串交互时会有所放宽。特别是,如果新的默认限制512,应用于变量窗格中的所有字符串值,还不够,您可以通过以下方式之一利用更大的限制4096:
Copy as Expression
Copy Value
如果这对您的使用情形来说还不够,或者您有任何其他反馈,请open an issue。来源
4条答案
按热度按时间fquxozlt1#
配置打印字符串长度的功能最近被添加到delve中。
这里我们感兴趣的是
max-string-len
,您可以看到它当前是<not defined>
。现在运行
print myString
应该打印整个字符串。oewdyzsn2#
为了补充您的答案,如果您使用VS Code调试功能,请将以下配置添加到您的
settings.json
:yhived7q3#
除了上面的答案,为了在每次运行
dlv
时应用这些配置,您应该能够在(see the sourcecode)中找到配置文件:$HOME/.dlv/config.yml
在MacOS上为默认值$HOME/.dlv/config.yml
。如果设置了$XDG_CONFIG_HOME
,则它应该在$XDG_CONFIG_HOME/dlv/config.yml
中例如,
config.yml
文件中的相关区域:第一个
p5cysglq4#
VSCode的Go调试工具
我需要查看大字符串。如果不推荐使用
maxStringLen
的dlvLoadConfig
,我该如何查看?旧版适配器使用
dlvLoadConfig
作为一次性会话范围设置来覆盖dlv的保守默认变量加载限制,以保护工具的性能。新的调试适配器采用不同的方法,按需加载复合数据和更新的字符串限制,在与单个字符串交互时会有所放宽。特别是,如果新的默认限制512,应用于变量窗格中的所有字符串值,还不够,您可以通过以下方式之一利用更大的限制4096:Copy as Expression
通过DEBUG CONSOLE面板中的REPL查询字符串Copy Value
到剪贴板如果这对您的使用情形来说还不够,或者您有任何其他反馈,请open an issue。
来源