Указанный пользователем параметр «dlvLoadConfig» будет проигнорирован адаптером отладки «dlv-dap»

# #go #vscode-settings

Вопрос:

Когда я запускаю отладку dlv в VSCode, я получаю это сообщение:

Указанный пользователем параметр «dlvLoadConfig» будет проигнорирован адаптером отладки «dlv-dap».

Источник-ночное расширение Go.

dlvLoadConfig раздел конфигурации уже стал недоступен (устарел)?

запуск.json :

     "configurations": [
        {
            "name": "Application Server",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${workspaceFolder}/cmd/main.go",
            "args": ["--config", "${workspaceFolder}/configuration/application.toml"],
            "env": {
                "CC":"/usr/bin/gcc",
                "GOOS":"linux",
                "GOARCH":"amd64",
                "CGO_ENABLED":1
            },

            "dlvLoadConfig": {
                "followPointers": true,
                "maxVariableRecurse": 1,
                "maxStringLen": 1024,
                "maxArrayValues": 64,
                "maxStructFields": -1
            },

            "trace": "log"
//            "buildFlags": "-tags dev -ldflags '-X main.BuildDate=2021-04-28T19:38:16 03:00'"
        }
]
 

Ответ №1:

Возможно, вам потребуется обновить конфигурацию, как указано здесь: https://github.com/golang/vscode-go/blob/master/docs/debugging.md#switching-to-legacy-debug-adapter

https://github.com/golang/vscode-go/blob/master/docs/debugging.md (из :https://github.com/golang/vscode-go/blob/master/docs/dlv-dap.md )

 "go.delveConfig": {
    "debugAdapter": "legacy",
}
 

Кстати, установка последней версии, похоже, не скопировала двоичный файл как dlv-dap (что, похоже, ожидается vscode). Я только что создал символическую ссылку на dlv (mac-osx), и она работает в режиме dlv-dap

 ln -s dlv dlv-dap
 

Комментарии:

1. Спасибо за ссылку, описывающую эту проблему. Я постараюсь использовать dlv-dap и вернусь к наследию, когда что-то пойдет не так.

Ответ №2:

Добавление «debugAdapter» тоже работает для меня.

 "debugAdapter": "legacy",
 

Ответ №3:

https://github.com/golang/vscode-go/blob/master/docs/debugging.md#settings Новый dlv-dap использует совершенно другой подход к загрузке данных, поэтому dlvLoadConfig больше не требуется.

Для строковых значений он использует 512 или 4K в зависимости от контекста по состоянию на август 2021 года. (512 для отображения в разделе ПЕРЕМЕННЫЕ, 1K для результатов вызова функций, 4K, если вы запрашиваете переменные из КОНСОЛИ ОТЛАДКИ или используете ЗНАЧЕНИЕ КОПИРОВАНИЯ)

Я заметил, что вы использовали maxStringLen: 1024 в своих настройках. В настоящее время мы рассматриваем возможность увеличения предела того, сколько мы показываем в разделе ПЕРЕМЕННЫЕ. Мы увеличиваем это медленно и консервативно, потому что это приводит к автоматической загрузке большого количества данных для всех переменных и может замедлить производительность отладки. Если проверки длинных строковых переменных из КОНСОЛИ ОТЛАДКИ (по требованию) недостаточно, пожалуйста, откройте новую проблему в github.com/golang/vscode-go репо.

Комментарии:

1. Я использовал maxStringLen параметр, чтобы увидеть полный текст переменной. Я видел во время отладки в новой версии VSCode улучшение просмотра переменных. Пример я могу видеть правильные значения карт с ключами. Спасибо. Я понял, если у меня возникнут какие-то неудобства при просмотре переменных, я дам вам знать. Я думаю, что хорошая идея состоит в том, чтобы сделать возможность в окне просмотра вручную приводить переменные к различным типам. И , конечно же, просмотр памяти всегда приветствуется.

2. Приведение переменных к различным типам должно уже работать, если приведение допустимо (например, строка(b), где b — [] байт). Пожалуйста, сообщите о проблеме, если это не так.