Как напечатать полное значение строковой переменной в delve?

Я использую отладчик delve go для отладки некоторого кода. Когда я пытаюсь напечатать строковую переменную, она дает мне сокращенную версию.

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

Как мне заставить его напечатать полную строку?

4 ответа

Возможность настройки длины напечатанных строк была недавно добавлена ​​в 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 по умолчанию в MacOS
  • $HOME/.dlv/config.ymlпо умолчанию в Linux. Если$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
...

Отладчик VSCode Go

Мне нужно просмотреть большие строки. Как я могу это сделать, если сmaxStringLenне рекомендуется?

Используемый устаревший адаптерdlvLoadConfigв качестве одноразовой настройки для всего сеанса, чтобы переопределить консервативные ограничения загрузки переменных по умолчанию dlv, предназначенные для защиты производительности инструмента. В новом адаптере отладки используется другой подход с загрузкой составных данных по запросу и обновленными ограничениями строк, смягченными при взаимодействии с отдельными строками. В частности, если новое ограничение по умолчанию в 512, применяемое ко всем строковым значениям на панели переменных, недостаточно, вы можете воспользоваться большим ограничением в 4096 с помощью одного из следующих способов:

  • Наведите курсор на переменную в исходном коде
  • Copy as Expressionзапросить строку через REPL в панели DEBUG CONSOLE
  • Copy Valueв буфер обмена

Пожалуйста, откройте вопрос , если этого недостаточно для вашего варианта использования или если у вас есть дополнительные отзывы.

Источник

Другие вопросы по тегам