пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Отладка программ в Visual C++. Точка останова. Установка точек останова. Команды и окна отладки.

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

Терминология отладки

Очевидно, что при отладке программ ключевым понятием является термин точка останова. Точка останова – это место в прог-ме, в кот-м вы хотите остан-ся. Возможно, вас интересует кол-во выполняемых циклов или место, в которое передается управление внутри оператора if, или место, откуда происходит вызов функции. В точке останова останавливается выполнение программы перед выполнением соответствующего оператора программы. В этом месте вы можете прекратить вып-е программы и перезапустить ее или работать дальше и т.д. Чтобы продолжить выполнение программы, используйте следующие команды.

  • Go – выполнять до следующей точки останова или до конца программы, если далее не встретятся точки останова.
  • Restart – возобновить выполнение прог-мы с самого начала.
  • Step Over – выполнить только след-й оператор и снова остан-ся. Если оператор с точкой останова оказался вызовом функции, выполнить ее полностью и остановиться после возврата из нее.
  • Step into – выполнить только следующий оператор, но если он окажется вызовом функции, войти в нее и остановиться на первом же операторе внутри функции.
  • Step Out – выполнить всю оставшуюся часть ф-ции и остан-ся на первом же операторе ф-ции, кот-я вызвала данную функцию.
  • Run To Cursor – продолжить выполнение программы и остановиться на операторе, на котором находится курсор.

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

Команды меню

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

 

  • Edit->Breakpoints
  • View->DebugWidows ->Watch
  • View->DebugWidows ->Call Stack
  • View->DebugWidows ->Memory
  • View->DebugWidows ->Variables
  • View->DebugWidows ->Registers
  • View->DebugWidows ->Dissassembly
  • Build->Start Debug->Go
  • Build->Start Debug->Step Into
  • Build->Start Debug->Run To Cursor
  • Build->Start Debug->Attach to Process
  • Build->Debugger Remote Connection

 

Как только вы приступили к отладке, вместо меню Build появляется меню Debug, включающее следующие пункты.

 

1.Debug->Go

2.Debug->Restart

3.Debug->Stop

4.Debug->Break

5.Debug->Step Into

6.Debug->Step Over

7.Debug->Step Out

8.Debug->Run To Cursor

9. Debug->Step Into Specific Function

10.Debugging Debug->Exceptions

11. Debug->Threads

12.Debug->Show Next Statement

13.Debug->Quick Watch

 

В меню Debug дублируются некоторые из пунктов каскадных меню Build->Start Debug. Рассмотрим отдельные команды меню.

Установка точек останова

Проще всего установить точку останова, поместив курсор на оператор программы, перед выполнением которого вы желаете остановиться. Точка останова устанавливается с помощью клавиши <F9> или пиктограммы Insert/Remove breakpoint панели инструментов Build, которая имеет вид поднятой руки. Красная точка слева от оператора отметит точку останова.

При выборе пункта меню Edit->Breakpoints на экран выводится диалоговое окно для установки простых или условных точек останова. Например, можно остановиться там, где изменяется некоторое значение переменной. Можно также установить условные точки останова, такие как прервать выполнение программы, когда i достигает 100 и не  щелкать на Go 100 раз.

Другие окна для отладки

Memory, Registers, Disassembly – эти окна обеспечивают отладку деталей программы, редко встречающихся в обычной процедуре отладки. С появлением каждой новой версии Visual С++ обст-ва, при кот-х эти окна необх-мы, встреч-ся все реже.

Окно Memory

В окне Memory содержатся шестнадцатеричные значения в каждом байте памяти от Ох00000000 до ОхFFFFFFFF. Просматривать содержимое памяти с его пом-ю утомительно. Для ввода интересующего вас адреса проще исп-ать окно Address. Обычно эти адреса копируются через буфер из окна Variables.

Окно Registers

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

Окно Disassembly

По умолчанию окно Disassembly заполняет весь экран, заменяя текст программы на С++ в основной рабочей зоне. В нем можно увидеть операторы ассемблера, сгенерированные для программы, написанной на С++.

Применение утилиты MFC Tracer

Утилита МЕС Тгасег является автономным приложением с пунктом меню, интегрированным в VS. Для ее выполнения выберите команду Tools->MFC Tracer. Откроется диал.окно Tracer.

Трассировщик делает не очень много: он просто устанавливает флаги трассировки, которые управляют видом получаемого выхода при отладке.

Метод Dump() существует во всех классах MFC. Если в программе что-то неправильно, код с дескриптором ошибки вызывает эту функцию, чтобы показать содержимое объекта.


18.01.2020; 23:04
хиты: 49
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь