Отладчик Microsoft Visual Studio




отладчик Microsoft Visual Studio, умная точка останова

Начнем с того, что разберемся что такое отладка программы и обсудим зачем и когда необходимо пользоваться отладчиком.

Отладка программы — это тот этап разработки программы, на котором программист ищет и устраняет всевозможные ошибки кода. Особенно нас интересуют ошибки, которые возникают на этапе выполнения программы, а не на этапе компиляции. Именно они могут привести к серьезным проблемам и сбоям программы, обнаружить причину которых бывает непросто.

Иногда, чтобы найти ошибку и посмотреть, что к ней приводит, надо пройти какой-то участок кода по шагам, по которым программа проходит в момент выполнения. Так же интересно увидеть, как при этом меняются данные программы (значения переменных): какие значения они принимают в определённые моменты времени. В Microsoft Visual Studio для такой работы, к счастью, есть отладчик. В этой статье будут рассмотрены основы работы с отладчиком.

Допустим, надо проанализировать и отладить следующий код:

Наберите его в Visual Studio. В этом коде нет синтаксических ошибок, которые не пропустил бы компилятор до начала выполнения программы. Программа начнет выполняться, проделает определенный участок работы и возникнет ошибка:

отладчик Microsoft Visual Studio, умная точка остановаНачнем отладку и посмотрим, в следствии чего произошла ошибка на этапе выполнения. Для этого, находясь в Visual Studio, надо нажать клавишу F10. Программа начнет выполнятся и остановится на первой выполняемой строке. Вы увидите жёлтую стрелку возле той строки программы, которая выполняется в данный момент:

отладчик Microsoft Visual Studio, умная точка останова

Чтобы перейти к выполнению следующего шага, надо снова нажать на F10. Желтая стрелка переместится на другую строку:

отладчик Microsoft Visual Studio, умная точка останова

Теперь посмотрите вниз экрана в Visual Studio — там есть вкладка в которой можно отслеживать, как изменяются данные переменных в реальном времени.

отладчик Microsoft Visual Studio, умная точка останова

Тут переменная только создается и хранит какой-то мусор. При следующем нажатии на F10 стрелка переместится в строку 8. Во вкладке уже будет видно, что объявлена переменная i, а также какое значение приобрела переменная var55.

отладчик Microsoft Visual Studio, умная точка останова

Нажимайте на F10 и смотрите, как изменяются данные. Когда вы будете проходить отладчиком по циклу четвертый раз, переменная i примет значение 0. Это и приводит к ошибке выполнения программы так как на 0 делить нельзя.

отладчик Microsoft Visual Studio, умная точка останова

отладчик Microsoft Visual Studio, умная точка останова

Для выхода из режима отладки — нажмите Shift+F5. Если код большой и вам надо отладить его с какой-то определенной строки, а не с самого начала — просто установите курсор в нужную строку и нажмите Сtrl+F10.

Точка останова (breakpoint) и Умная точка останова

На сайте msdn есть такое определение точки останова:

отладчик Microsoft Visual Studio, умная точка останова

Если надо выполнить программу до определённого места в коде и только достигнув его, запустить отладчик — используют точку останова.

Чтобы установить точку останова в строку cout << var55 / i << endl; , поставьте курсор перед ней и нажмите F9. После этого можно будет увидеть возле этой строки красную точку — это она и есть.

отладчик Microsoft Visual Studio, умная точка останова

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

отладчик Microsoft Visual Studio, умная точка останова

В консоли будет отображаться то, что успело выполниться до 12-й строки.

отладчик Microsoft Visual Studio, умная точка остановаДальше можно отлаживать программу, как и раньше — нажимая F10 и наблюдая за переменными. Всё что выполняется в программе, будет отображаться в консоли. Чтобы снять точку останова — надо поставить курсор в строку где она находится и нажать F9

Если, к примеру, итераций не 3, как в нашем коде, а 333 и мы видим, что ошибка появляется на последних итерациях, правда не очень хочется проходить все эти шаги цикла отладчиком? Есть возможность пропустить, скажем, 330 итераций, и проанализировать только последние 3. Для этого воспользуемся умной точкой останова. Сначала скопируйте этот код:

Теперь установите обычную точку останова (F9) и щелкните по ней правой кнопкой мыши. Откроется выпадающее меню с дополнительными возможностями для неё.

умная точка останова

Чтобы выполнить программу до 330-й итерации и перейти в режим отладки, выберите Число попаданий.

умная точка остановаТеперь выбираем «если число попаданий равно», пишем 330 и жмем ОК. На точке останова появится белый +. Это означает, что она обладает дополнительными условиями. Нажимаем F5, для запуска программы. Она приостановится и перейдет в режим отладки на 330 итерации (на 330-м попадании в точку останова). Далее уже нажимая F10 проходим по циклу до последней итерации.
Это основные, но далеко не все возможности отладчика Microsoft Visual Studio. Со временем рассмотрим и другие.

Подписывайтесь на рассылку новых уроков от сайта — не пропускайте обновления информации об основах программирования на C++. Поддерживайте наш сайт — ставьте like и делитесь ссылками на наши уроки в социальных сетях. Кнопки можно найти под каждой статьей.

Рассылка новых уроков по программированию:

Дата
Страница
Отладка в Microsoft Visual Studio
Рейтинг
51star1star1star1star1star

Отладчик Microsoft Visual Studio: 1 комментарий

  1. >> Это основные, но далеко не все возможности отладчика Microsoft Visual Studio. Со временем рассмотрим и другие.

    Я, конечно, не знаю, что там за еще возможности в студии есть. Но мне кажется в статье не хватает упоминания про стек вызовов и вычисляемых значений (на одной из картинок у вас видна вкладка — «контрольные значения» — это оно вроде бы).

    Про стек вызовов можно на примере рекурсивной функции рассказать, мне кажется. Вы же как раз недавно тему рекурсии раскрыть пытались :).

    Я бы не зацикливался на студии — в других средах тоже самое, отличаются только названия и расположение окошек…

    Можно было в целом про отладку написать — ну например, можно ведь стратегически расставлять cout и таким образом находить место с ошибкой )). По крайней мере, пока удобных IDE не появилось — так и делали, да и сейчас иногда это удобнее. В стандартной библиотеке есть специальные потоки clog и cerr, которые можно юзать вместо cout чтобы стандартный поток вывода не забивать ерундой (ну а еще их можно перенаправить куда-нибудь). В библиотеке Qt есть метод QObject::qDebug() позволяющий выводить сообщения для отладки в специальное окошко отладчика.

Добавить комментарий

Код размещайте в тегах: <pre class="lang:c++ decode:true ">YOUR CODE</pre>