How do I print the full value of a string variable in delve?

Viewed 14079

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?

3 Answers

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.yml

For 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
...
Related