Основи програмування на С ++ для початківців

Отладчик 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.

4 думки про "Отладчик Microsoft Visual Studio

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

    Я, звичайно, не знаю, що там за ще можливості в студії є. Але мені здається в статті не вистачає згадки про стек викликів і обчислюваних значень (на одній з картинок у вас видно вкладка – “контрольні значення” – це воно начебто).

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

    Я б не зациклювався на студії – в інших середовищах теж саме, відрізняються тільки назви і розташування віконець…

    Можна було в цілому про налагодження написати – Ну наприклад, можна адже стратегічно розставляти cout і таким чином знаходити місце з помилкою )). Принаймні, поки зручних IDE не з'явилося – так і робили, та й зараз іноді це зручніше. У стандартній бібліотеці є спеціальні потоки clog і cerr, які можна юзати замість cout щоб стандартний потік виведення не забивати дурницями (ну а ще їх можна перенаправити куди-небудь). У бібліотеці Qt є метод QObject::QDebug() дозволяє виводити повідомлення для налагодження в спеціальне віконце відладчика.

  2. “Тепер подивіться вниз екрану в Visual Studio - там є вкладка в якій можна відстежувати, як змінюються дані змінних в реальному часі.”
    а якщо немає такої вкладки, як її відкрити?

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *