Смущает отладчик vscode delve - PullRequest
0 голосов
/ 28 июня 2018

Я искал везде и пробовал все, что мог, но отладка go exes в VSCODE просто ведёт себя очень странно для меня.

Если я перебираю код, иногда кажется, что отладчик перепрыгивает повсюду, как будто я переключаю потоки. В большинстве случаев, если я наведу курсор на переменные, ничего не произойдет. Если я пытаюсь добавить их как часы, я просто "недоступен". Я строю и работаю изнутри IDE.

У меня последняя версия go and delve. Я вижу, что мне следует избегать оптимизаций компилятора с некоторыми настройками gcflags, но ничего не делать. Не знаю, как добиться прогресса. Любые подсказки?


ОБНОВЛЕНИЕ: В конце концов, это была просто опечатка в задаче сборки, используемой VSCODE. Проблема действительно заключалась в оптимизации компилятора, которую нужно было отключить, используя следующий точный синтаксис:

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
    {
        "label": "Make Prog",
        "type": "shell",
        "command": "go",
        "args": [
            "install",
            "-gcflags",
            "-N -l",
            "./..."
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        },


    }
]

}

Также важно, что я использую «exec», а не «debug», для отладки исполняемого файла.

1 Ответ

0 голосов
/ 28 июня 2018

Delve позволяет вам взаимодействовать с вашей программой, управляя выполнение процесса, оценка переменных и обеспечение информация о состоянии потока / процедуры, состоянии регистра ЦП и т. д.

Delve скомпилирует основной пакет в текущем каталоге и начнет его отладку.

На ваш вопрос: -

Если я перейду к коду, кажется, что отладчик перебирает все место иногда, как будто я переключаю темы

Предположим, у вас есть код, в котором возникает ошибка, и ваш код паникует, тогда VSCode заставит вас перейти к определению паники, определенному в его основных файлах, при отладке кода.

По второму вопросу: -

В большинстве случаев, если я наведу курсор на переменные, ничего не произойдет. Если я попробую чтобы добавить их как часы, я просто "недоступен".

Vs Code может предоставить вам только определения тех функций, которые определены в том же пакете, поэтому, если они определены в другом пакете, вам придется импортировать этот пакет, иначе он покажет вам unavailable определение функции. Поэтому проверьте правильность импорта там, где при наведении указывается unavailable.

Для получения дополнительной информации Проверьте документацию по использованию для Delve Debugger

Отредактировано : Даже если он прыгает при использовании F10, создайте точки останова после кода, в котором он прыгает, и используйте F12 для перехода к следующей точке останова, таким образом, он не будет переходить к основной функции определение.

...