#debugging #visual-studio-code
Вопрос:
Я начинающий программист на языке Си. В настоящее время в моей 64-разрядной системе Windows установлена Visual Studio версии 1.61 от сентября 2021 года. Я также установил MingW64 и настроил переменные среды для компиляции и отладки с целью написания, отладки и запуска моих программ на языке си.
Я смог писать и запускать свои программы без каких-либо проблем. Я заметил, что всякий раз, когда я хочу отладить свою программу, на панели инструментов отладки, которая находится сверху, кнопки отключены, и «желтая стрелка»не указывает ни на одну строку.
Я изменил файл «launch.json», в котором установил следующее:
"stopAtEntry": true,
Это установило желтую стрелку в начале программы вместо точки останова, и были активированы кнопки панели инструментов отладки. Хотя всякий раз, когда я перехожу к следующей строке кода, желтая стрелка исчезает, а кнопки панели инструментов отладки снова деактивируются. Это часто происходит в строках, где я присваиваю значения переменным.
Я новичок, и я нахожу VS-код довольно неприятным, я был бы признателен за ваш вклад и предложения. Спасибо
Ответ №1:
ОБНОВЛЕНИЕ: Я решил эту проблему.
Итак, оказывается, что с моим отладчиком все в порядке, и он вел себя так, как должен. Я заметил, что он всегда будет вести себя так всякий раз, когда компилятор gcc должен был выполнить строку в том числе scanf()
. Регистры и переменные в списке наблюдения внезапно станут «недоступными», это связано с тем, что компилятор ждал ввода данных пользователем.
Поскольку в коде VS не отображалась запущенная программа в PowerShell, я изменил некоторые конфигурации «launch.json» на следующие:
"externalConsole": true,
Это позволяет открывать командную строку, отображать запущенную программу и позволяет вводить данные пользователем.
Как только пользовательский ввод получен, кнопки панели инструментов отладки снова активируются, и я могу продолжить отладку. Переменная списка наблюдения также становится доступной для анализа.
"stopAtEntry": false,
Я установил для этой конфигурации значение false, потому что не хотел, чтобы отладчик начинался в начале программы.
Это, конечно, было неприятно, но после того, как я нашел решение этой «проблемы», я готов поспорить, что мои уровни эндорфина и окситоцина зашкаливают.
Очень волнующе, это то, что мне больше всего нравится в решении проблем.
Комментарии:
1. Рад видеть, что вы решили свою проблему. Однако вам не нужно было устанавливать
"externalConsole": true
. Если вы сохраняете значение false, используется встроенный терминал, что ИМО удобнее. Возможно, вы захотите попробовать это2. Отмеченный. Спасибо за предложение