Отладка с использованием независимых отладчиков

Итегрированные средства отладки

Большинство современных сред программирования включают средства отладки, которые обеспечивают максимально эффективную отладку. Они позволяют:

§ выполнять программу по шагам, причем как с заходом в подпрограммы, так и выполняя их целиком;

§ предусматривать точки останова;

§ выполнять программу до оператора, указанного курсором;

§ отображать содержимое любых переменных при пошаговом выполнении;

§ отслеживать поток сообщений и т.п.

Применять интегрированные средства в рамках среды достаточно просто. Используют разные приемы в зависимости от проявлений ошибки. Если получено сообщение об ошибке, то сначала уточняют, при выполнении какого оператора программы оно получено. Для этого устанавливают точку останова в начало фрагмента, в котором проявляется ошибка, и выполняют операторы в пошаговом режиме до проявления ошибки. Аналогично поступают при "зависании" компьютера. Если получены неправильные результаты, то локализовать ошибку обычно существенно сложнее. В этом случае сначала определяют фрагмент, при выполнении которого получаются неправильные результаты. Для этого последовательно проверяют интересующие значения в узловых точках. Обнаружив значения, отличающиеся от ожидаемых, по шагам трассируют соответствующий фрагмент до выявления оператора, выполнение которого дает неверный результат. Для уточнения природы ошибки возможен анализ машинных кодов, флагов и представления программы и значений памяти в 16-ричном виде. Причину ошибки определяют, используя один из рассмотренных методов. При этом для проверки гипотез также можно использовать интегрированные средства отладки.

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

 

В процессе отладки вы можете:

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

2. Проверять значение и местоположение (адрес) некоторой переменной в ходе выполнения программы>

3. Просмотреть последовательность вызова функций в программе.

Существует два режима пошагового выполнения программы:

1. Трассировка с заходом в тело функции, при встрече ее вызова в тексте программы (F7);

2. Пошаговое выполнение функции (как обычной команды без захода в тело функции), при встрече ее вызова в тексте программы (F8).

 

Команда RunTrace into (F7) запускает программу на отладку. Интегрированная среда высвечивает строку программы, содержащую точку входа main(). После этого нажатием клавиши F7 вызывается выполнение кода, соответствующего одной строке текста программы. Если в строке записана ссылка на функцию, начинается трассировка по тексту тела функции. При необходимости выполнения строки функции за один шаг, используется клавиша F8 ( команда RunStep over).

Для ускорения процесса отладки используется команда RunGo to cursor (F4). Программа выполняется до строки, в которой в данный момент располагается текстовый курсор. Можно также задать режим выполнения до точки останова (через опцию подменю "DebugToggle breakpoint" или одновременным нажатием клавиш Ctrl и F8, в дальнейшем будем использовать запись "Ctrl+F4"). При этом строка в точке останова подсвечивается обычно красным фоном. Снять установку точки останова можно повторным выполнением описанной команды, размещая курсор на подсвеченной строке останова.

 

Для наблюдения за изменением значений переменных в ходе выполнения программы используется подменю DebugWatchesAdd watch или "Ctrl+F7". В появившемся окне Add Watch ( вызов окна Add Watch можно также получить, если нажать клавишу Ins, предварительно сделав активным окно Watch) необходимо ввести имя переменной, значение которой необходимо просмотреть и нажать Ввод.

 

Указанная переменная размещается в окне Watch, создаваемом в нижней части экрана, и, в процессе отладки, через это окно можно наблюдать за изменением размещенных в нем переменных. Удалить переменную из окна Watch можно при помощи клавиши "Del", предварительно выделив ее подсветкой.

 

Используя опцию меню Evaluatemodify или "Ctrl+F4", можно изменить значение переменной в процессе выполнения отладки, чтобы протестировать алгоритм с новым заданным значением. Окно этой опции "Evaluate and Modify" можно использовать и в качестве калькулятора, если записать выражения с переменными в строке "Expression" и нажать клавишу "Evaluate" для получения результата в строке Result.