{ $O+} – включена, { $O-} – выключена.
StackFrames – если эта опция включена, компилятор всегда включает в функцию код для генерации кадра стека, даже если код не использует стек. { $W+} { $W-}
Range Checking – проверка диапозона. Перехватывет ошибки вызванные выходом за пределы массива или строки. Как правило это нужно анализировать программно. Поэтому в коммерческой версии этот флаг как правило отключают. { $R+} { $R-}
Assertions – опция позволяет вставлять проверки в код программы на корректность тех или иных условий. В отладочном коде это проверки производятся, а в окончательном они исключаются (как правило проверки аргументов функций) { $С+} { $С-}
Overlow Checking – проверка на переполнение. Позволяет выяснить не является ли результат выполнения целочисленной операции слишком большим для размещения его в целочисленной переменной. Подобно опции Range Checking данная операция полезна при отладке и в комерческой версии отключается. { $Q+} { $Q-}
Использование директивы Assert (выражение)
Оператор Assert проверяет логическое выражение на истину и ложь. Если выражение окажется ложным, то на экран будет выдано окно с сообщением об ошибке при этом сообщение выглядит следующим образом: Assertionfailure (D:\Pascal\f. PAS line 28), где f. PAS – файл в котором ошибка, line 28 – на какой строке. Если выражение истина, то никаких сообщений не выдается. Если установлен ключ $C+ или в параметрах компилятора Assertion установлена галочка (ON), то оператор Assert, где бы он не встречался в программе будет проверять условие, будет выполняться. Если Assert – OFF, то во всей программе все операторы будут игнорироваться и исключаться из программы. Обычно для использования оператора Assert в программу включают следующий код:
{ $IFDEF Debug}
(Assertion ON)
{ ELSE}
(Assertion OFF)
{ $ENDIF}
Как правило Assert используется внутри функций или процедур для проверки корректности параметров. Пример:
Procedure sum (count: integer);
Begin
Assert (count>0);
.
.
.
end;
Выражение может быть любым допустимым выражением языка Pascal. Однако всегда следует помнить, что в конечной версии операторы Assert игнорируются точно также как и игнорируются все функции в операторе Assert и это необходимо учитывать в специфических случаях. Пусть в программе имеется функция, которая подсчитывает сколько раз она была вызвана
Function CountMe: integer;
Const ReferenceCount: integer = 0;
Begin
Inc (ReferenceCount);
Result:= ReferenceCount;
End;
.
.
Assert (CountMe < 10);
Модульное тестирование
Идея модульного тестирования состоит в разбивке приложения на функциональные единицы и тестирования каждой из них по отдельности. Это означает, как правило, написание одного или нескольких небольших приложений оболочек, цель создания которых отработать один из модулей приложения.
Основная задача: выявить все возможные ошибки исправить их. Так как в коммерческих версиях программы недопустимы сообщения о внутренних ошибках программы.
В коммерческих версиях программы сообщения об ошибках допускаются лишь в крайних случаях, как правило, не приводящих к краху системы. Главное – даже эти ошибки должны отслеживаться программистом.
Главным при поиске сложных ошибок является повторное воспроизведение ошибочной ситуации. Важно вспомнить и проанализировать все исходные ситуации, приводящие к ошибке.
Пример модульного тестирования


Основной модуль Модуль работы с файлами create File (V)
Закомментируем весь модуль для создания мини приложения. case V:
Create File (V1) различные комбинации 1-типизированный
Save File ( ) вызова функций 2-нетипизирован
Load File ( ) 3-текстовый
Интегрированный отладчик в Delphi
Отладчик позволяет:
1) пошагово выполнять операторы программы
2) отслеживать значения функций и переменных в ходе выполнения программы
3) расставлять точки прерывания (останова)
4) корректировать внутреннее значение переменных в ходе выполнения программы
Для использования более широких возможностей отладчика Delphi, необходимо произвести настройку отладчика
Замечание: как правило, параметры отладчика, используемые по умолчанию, достаточно широко используют его возможности. Поэтому в большинстве случаев достаточно стандартной настройки отладчика.
Трассировка – пошаговое выполнение программы.
Основные параметры отладчика
Tools – Options – Environment options – Preferences
Integrated Debugging – позволяет включать и отключать встроенный отладчик. Если он будет отключен, то отладчик команды в меню Run будет недоступен.
Если возникли проблемы при запуске приложения из интегральной среды Delphi - возможно это вызвано конфликтом встроенного отладчика с другими приложениями, запущенными в системе.
Попробуйте отключить встроенный отладчик, и если это поможет, то проблема кроется в конфликте с одним из уже запущенных приложений.
Step Program Block определяет, должен ли отладчик останавливаться перед началом выполнения основного блока программы: begin…end. Обычно опция отключена.
Hide Designers on Run – если эта опция включена, то окно Object inspector и формы используются при разработке приложения перед запуском программы на выполнение. Отключение этой опции позволяет запускать программу быстрее, но эффект перекрытия дизайнерских окон окнами приложения плохо способствует отладке.
Break on Exception – прерывание при исключительных ситуациях. Когда опция включена, всегда перехватываются исключительные ситуации и выводится окно сообщения, даже если в программе исключительная ситуация обрабатывается блоком: try…except.
Включение опции упрощает отладку, так как вывод сообщения будет более информативным, чем сообщения обработчика, установившего по умолчанию.
Отладчик при этом размещает окно редактора поверх основных окон и выделяет строку, вызвавшую исключительную ситуацию.
При отладке эту опцию желательно включить. В окончательном релизе выключить.
Minimize on Run – сворачивает окно отладчика при запуске.
Включение в код отладочной информации
Project/Options/Compiler Debug Info
{$D+} {$D-}
Включает или исключает из кода программы отладочную информацию. При отключении опции вы не можете транслировать код или ставить точки прерывания в любом модуле.
При окончательной версии ее рекомендуется отключить.
Local Symbols $L+, $L - - контролирует включение информации о локальных переменных, декларированных, например, внутри функций, процедур и раздела implementation. Автоматически недоступна в случае отключения Debug Info.
Symbol Info – опцию нельзя целиком отнести к разряду отладочных, поскольку ее действие направлено на инспектор объектов, а не на встроенный отладчик. Если опция включена, то инспектор объектов сможет выводить информацию для объектов определенных модулей. Опция игнорируется при выключении двух предыдущих опциях ($Y+, $Y-).
Пошаговая отладка
Основные команды, используемые при отладке, находятся в меню Run.
Run: - Run (F9) – запуск программы на выполнение в обычном режиме
- Step Over (F8) – «выполнить, не входя во внутрь». Когда точка выполнения находится на строке, содержащей вызов процедуры или функции, то эта команда за один шаг выполнит эту процедуру и функцию, не входя во внутрь его, ее тела. После этого точка выполнения (трассировки) перемещается на следующую строку.
- Trace Into (F7) – «трассировать во внутрь». В отличие от предыдущей трассировки входит во внутрь тела процедуры или функции и далее начинает трассировать.
- Trace to Next Source Line (Shift+F7) – трассировать до следующей строки текста. Иногда код программы содержит функции или процедуры, вызываемые и в других программах или библиотеках. Например, при вызове функций, которые запускают обработчик события или при вызове функции Windows API, которая запускает функцию косвенного вызова. Поскольку вызовы косвенные, отладчик не видит вызова и не отслеживает пошаговое выполнение таких вызовов.
- Run to Cursor (F4) – программа запускается и будет выполняться, пока не достигнет той строки, на которой находится курсор в процессе запуска. После этого программа остается и переходит в трассировочный режим.
- Show Execution Point – заставляет среду разработки открыть окно редактора и показать выполняющуюся в настоящее время строку программы. Она полезна в случаях, когда закрыли или свернули окно редактора во время отладки.
- Program Pause – немедленная остановка выполнения программы. Используется при зацикливании программы.
- Program Reset (Ctrl+F2) – завершает отладку программы и возвращает среду разработчика. Полезна, если программа зависла.
Просмотр значений переменных
При пошаговом прохождении, как правило, просматривают значение тех или иных переменных программы. Для этого используется окно Watch List (Сtrl+F7)(Run → Add Watch), либо окно Evaluate/Modify(просмотр и изменение значения одной переменной). (Run – Evaluate/Modify=Ctrl+F7).
Особенностью Delphi является также возможность бесконечного просмотра значений той или иной переменной в процессе отладки с помощью мыши. Для этого необходимо навести курсор на переменную, после этого появится окно My var:59 и выведется значение переменной.
Для добавления переменной в Watch List нужно установить указатель мыши в тексте программы, нажать правую кнопку → Add Watch, либо через Run → Add Watch.
Перед добавлением переменной в список просмотра появляется окно Watch Properties (свойства просмотра переменных), в котором в поле Expression вводится имя переменной или любое правильное выражение языка Pascal. Это выражение не может создать вызов функции. Но допускается просмотр значения записей, массивов и других структурных элементов.
В окне Watch Properties есть поля: 1) Repeat Count - oно используется, если необходимо просмотреть часть большого массива.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 |


