Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование и основы алгоритмизации.doc
Скачиваний:
34
Добавлен:
21.08.2019
Размер:
4.84 Mб
Скачать

Отладка программы

Отладка программы осуществляется с использованием специализированной программной среды, называемой отладчиком. Отладчик позволяет решить следующие задачи:

  • определить место логической ошибки;

  • определить причину логической ошибки.

С помощью отладчика также возможно:

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

  • просмотр и изменение состояния аппаратных ресурсов микропроцессора во время покомандного выполнения программы.

Для организации процесса получения исполняемого модуля для отладки необходимо выполнить следующие действия.

  • В исходной программе должна быть обязательно определена метка для первой команды, с которой начнется выполнение программы. Такая метка может быть собственно меткой или именем процедуры. Имя этой метки обязательно нужно указать в конце программы в качестве операнда директивы END:

END имя_метки

  • Исходный модуль должен быть оттранслирован с опцией /zi:

c:\masm32\bin\ml /c /coff /Zi PROG.ASM

Применение опции /zi разрешает транслятору сохранить связь символических имен в программе и их смещений в памяти, что позволит отладчику производить отладку, используя оригинальные имена идентификаторов.

  • Компоновка модуля должна быть произведена с опцией /DEBUG:

c:\masm32\bin\link /SUBSYSTEM:WINDOWS /DEBUG PROG.OBJ

Опция /DEBUG указывает на необходимость сохранения отладочной информации в исполняемом файле.

Для отладки программы как в комбинированном проекте с использованием нескольких языков программирования, так и в проекте программы на ассемблере, можно использовать встроенную среду отладки Microsoft Visual Studio.

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

Запустить программу на выполнение в отладчике можно в одном из четырех режимов:

  • режим безусловного выполнения;

  • выполнение по шагам;

  • выполнение до текущего положения курсора;

  • выполнение с установкой точек прерывания.

Режим безусловного выполнения целесообразно применять, когда требуется посмотреть на общее поведение программы. Для запуска программы в этом режиме необходимо нажать клавишу F5 или выбрать меню DebugStart Debugging. В точках, где необходимо ввести данные, отладчик, в соответствии с логикой работы применяемого средства ввода, будет осуществлять определенные действия. Аналогичные действия отладчик выполняет для вывода данных.

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

Выполнение по шагам применяется для детального изучения работы программы. В этом режиме можно выполнить программу по командам. При этом можно наблюдать результат исполнения каждой команды. Для активизации этого режима нужно нажать клавишу F11 (меню DrbugStep Into) или F10 (меню DrbugStep Over). Обе эти клавиши активизируют пошаговый режим; отличие их проявляется в том случае, когда в потоке команд встречаются команды перехода в процедуру call или на прерывание int. При использовании Step Into отладчик осуществит переход на процедуру или прерывание и выполнит их по шагам. Если же используется Step Over, то вызов процедуры или прерывания отрабатывается как одна обычная команда, и управление передается следующей команде программы.

Выполнение до текущего положения курсора позволяет выполнить программу по шагам, начиная с произвольного места программы. Этот режим целесообразно использовать в том случае, если интересует только правильность функционирования некоторого участка программы. Для активизации этого режима необходимо установить курсор на нужную строку программы и во всплывающем меню выбрать Run To Cursor. Программа начнет выполнение и остановится на отмеченной команде, не выполнив ее.

Выполнение с установкой точек прерывания позволяет выполнить программу с остановкой ее в строго определенных точках прерывания (breakpoints). Перед выполнением программы необходимо установить эти точки в программе, для чего следует перейти в нужную строку и во всплывающем меню выбрать BreakpointInsert Breakpoint. В выбранной строке слева появится красный кружок. Установленные ранее точки прерывания можно убрать — для этого нужно выбрать в нужной строке во всплывающем меню BreakpointDelete Breakpoint или BreakpointDisable Breakpoint (неактивная точка останова). После установки точек прерывания программа запускается на безусловное выполнение клавишей F5. На первой точке прерывания программа остановится. Теперь можно посмотреть состояние микропроцессора и памяти, а затем продолжить выполнение программы.

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

  • Для просмотра ассемблерного кода исполняемой программы выбрать меню DebugWindowsDisasembly;

  • для просмотра содержимого регистра выбрать DebugWindowsRegisters (содержимое регистров содержится в левом нижнем окне, при изменении значения регистра его цвет становится красным);

  • для просмотра значения идентификатора используется меню DebugWindowsWatch, где вводится имя идентификатора;

  • для просмотра области памяти используется меню DebugWindowsMemory, где вводится адрес ячейки памяти.

Для того, чтобы вывести в отладчике информацию о содержимом регистра признаков EFLAGS необходимо во всплывающем меню окна Registers выбрать соответствующую опцию Flags.