I'm using the delve go debugger to debug some code. When I try to print a string variable, it gives me an abbreviated version.
(dlv) print myString
"my string...+539 more"
How do I get it to print the full string?
I'm using the delve go debugger to debug some code. When I try to print a string variable, it gives me an abbreviated version.
(dlv) print myString
"my string...+539 more"
How do I get it to print the full string?
The ability to configure the length of printed strings was recently added to delve. To see the full list of configuration options, run config -list;
(dlv) config -list
aliases map[]
substitute-path []
max-string-len <not defined>
max-array-values <not defined>
show-location-expr false
The one we're interested in here is called max-string-len, which you can see is currently <not defined>. To increase the length to e.g. 1000, run
(dlv) config max-string-len 1000
Now running print myString should print the whole string.
Just to add to your answer, if you're using VS Code debugging feature, add the following config to your settings.json:
"go.delveConfig": {
"dlvLoadConfig": {
"maxStringLen": 1024,
},
"apiVersion": 2,
},
Adding to the above answers, to have these configs applied each time you run dlv, you should be able to find the config file in (see the sourcecode):
$HOME/.dlv/config.yml by default on MacOS$HOME/.dlv/config.yml by default on Linux. If $XDG_CONFIG_HOME is set then it should be in $XDG_CONFIG_HOME/dlv/config.ymlFor example, the relevant region in the config.yml file:
...
# 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
...