Инструменты, снижающие потребность в отладке



Другое направление — сделать, чтобы отладка нужна была как можно реже. Для этого применяются:

· Контрактное программирование — чтобы программист подтверждал другим путём, что ему на выходе нужно именно такое поведение программы. В языках, в которых контрактного программирования нет, используется самопроверка программы в ключевых точках.

· Модульное тестирование — проверка поведения программы по частям.

· Статический анализ кода — проверка кода на стандартные ошибки «по недосмотру».

· Высокая культура программирования, в частности, паттерны проектирования, соглашения об именовании и прозрачное поведение отдельных блоков кода — чтобы объявить себе и другим, каким образом должна вести себя та или иная функция.

· Широкое использование проверенных внешних библиотек.

Безопасность программного кода и отладка

В программном коде может быть так называемое недокументированное поведение — серьёзные ошибки, которые не проявляются при нормальном ходе выполнения программы, однако весьма опасны для безопасности всей системы в случае целенаправленной атаки. Чаще всего это результат ошибок программиста. Наиболее известные примеры — это SQL-инъекция и переполнение буфера. В данном случае задача отладки это:

· Выявление недокументированного поведения системы

· Устранение небезопасного кода

Выделяют такие методы:

· статический анализ кода. На этой фазе программа сканер ищет последовательности в исходном тексте, соответствующие небезопасным вызовам функций и т. д. Фактически идет сканирование исходного текста программы на основе специальной базы правил, которая содержит описание небезопасных образцов кода.

· фаззинг. Это процесс подачи на вход программы случайных или некорректных данных и анализ реакции программы.

· Reverse engineering (Обратная инженерия). Этот случай возникает, когда независимые исследователи ищут уязвимости и недокументированные возможности программы.

 

Отладка кода C++ с помощью отладчика Visual Studio

Точка останова указывает, где Visual Studio следует приостановить выполнение кода, чтобы вы могли проверить значения переменных или поведение памяти, либо выполнение ветви кода. Эта возможность чаще всего используется при отладке.

1. Чтобы задать точку останова, щелкните в области слева от вызова функции doWork (или выберите строку кода и нажмите клавишу F9).

2. Нажмите клавишу F5 (или выберите Отладка > Нача

3. ть отладку).

Отладчик приостановит выполнение в заданной точке останова. Инструкция, в которой отладчик приостановил выполнение приложения, обозначается желтой стрелкой. Строка, содержащая вызов функции doWork, пока еще не выполнена.

Совет

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

При отладке связанных с памятью сбоев в C++ вы также можете использовать точки останова для проверки значений адресов (для поиска значений NULL) и числа ссылок.

 

Условия точки останова

Можно управлять тем, где и когда выполняется точка останова, задавая условия. Условие может быть любое допустимое выражение, которое распознает отладчик. Дополнительные сведения о допустимых выражениях см. в разделе Выражения в отладчике.

Чтобы задать условие точки останова:

1. Щелкните символ точки останова правой кнопкой мыши и выберите условия. Или наведите указатель мыши на символ точки останова, выберите параметры значок, а затем выберите условия в параметры точки останова окна.

Можно также задать условия точки останова окно, щелкните точку останова правой кнопкой мыши и выбрав параметрыи затем выбрав условия.

2. В раскрывающемся списке выберите условное выражение, число попаданий, или фильтраи задайте значение соответствующим образом.

3. Выберите закрыть или нажмите клавишу Ctrl+ввод закрыть параметры точки останова окна. Или с точки останова выберите ОК чтобы закрыть диалоговое окно.

Точки останова с заданным условиям, обозначаются + символа в исходном коде и точки останова windows.

Условное выражение

При выборе условное выражение, можно выбрать два условия: Имеет значение true или при изменении.Выберите верно чтобы прервать выполнение при истинности выражения, или при изменении чтобы прервать выполнение при изменении значения выражения.

В следующем примере, точка останова достигается только тогда, когда значение testInt — 4:

В следующем примере, точка останова достигается только тогда, когда значение testInt изменения:

 

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

 


Дата добавления: 2020-04-25; просмотров: 190; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!