ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 13

Глава 10. Объектно-ориентированная отладка для Паскаля
Чтобы удовлетворить потребности развития методов объектно-ориентированного программирования, TDW поддерживает объектно-ориентированный Паскаль. Кроме тех расширений, которые позволяют вам выполнять трассировку методов объектов или функций элементов класс
ов в диалоговом окне Evaluate/Modify (Вычисление/Модификация) и окне Watch (Просмотр), Турбо отладчик TDW оснащен специальным набором окон и локальных меню, созданных специально для работы с объектами и классами. 
Окно Hierarchy
В Турбо отладчике TDW предусмотрено специальное окно Hierarchy (Иерархия) для проверки иерархии объектов или классов. Вывести это окно можно по команде меню ViewіHierarchy (ОбзоріИерархия). 
       Й[ю]ННННClass HierarchyНННННННННННННННННННН3ННННН[][]»
       єDevice      і АДДДДДДДДPoint                          є
       єGlowGauge   і           АДДДДДДДДДДRectangle          є
       єHorzArrow   і                       ГДДДДДДДDevice    є
       єHorzBar     і                       АДДДДДДДTextWindowє
       єLinearGauge іRange                                    є
       єPoint       і АДДДДДДDevice                           є
       єRange       і          ГДДДДДДGlowGauge               є
       єRectangle   ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДє
       єScreen      іParents of Device                        є
       єTextWindow  і іДДДДДДДДДДRange                        є
       єVertArrow   і АДДДДДДДДДДRectangle                    є
       єVertBar     і            АДДДДДДДДДДPoint             є
       є            і                       АДДДДДДДScreen    є
       ИНННННННННННННІ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±Ѕ
Рис. 10.1 Окно Hierarchy
В окне Hierarchy (Иерархия) выводится информация об объектных типах, а не об их экземплярах. В левой области выводится список в алфавитном порядке всех типов, используемых в отлаживаемом модуле. В правой области показана иерархия всех объектов (с помощью
 линейной графики). При этом по левой границе области выводится базовый тип и показываются производные (порожденные) им типы ("потомки"). Кроме того показаны все "предки" классов с множественным наследованием. При этом линии показывают отношения между "п
редками" и "потомками". 
Примечание: Для перемещения между областями используется клавиша Tab. 
Область списка типов объектов
В левой области окна иерархии объектов выводится (в алфавитном порядке) список всех типов объектов в текущем модуле. Она поддерживает средство инкрементального поиска, что исключает необходимость перемещать курсор по большим спискам типов. Когда полоса п
одсветки находится в левой области, можно просто начать набирать новое имя искомого типа объекта или класса. При каждом нажатии клавиши Турбо отладчик TDW подсвечивает первый тип, соответствующий всем нажатым к этому моменту клавишам. 
Для того, чтобы открыть окно Inspector (Проверка) для подсвеченного типа объекта или класса, нажмите клавишу Enter. Окна проверки описаны далее. 
 Локальное меню области области списка типов объектов и классов
Для вывода локального меню данной области нажмите клавиши Alt-F10. Вы можете также использовать сокращения (оперативные клавиши), если это разрешено с помощью утилиты TDWINST. Данное локальное меню содержит два элемента: Inspect и Tree. 
                     ЪДДДДДДДДДДДДДДДДДї
     Проверка        і Inspect         і
     Дерево          і Tree            і
                     АДДДДДДДДДДДДДДДДДЩ
Команда Inspect
Данная команда выводит для подсвеченного типа объекта окно Inspector (Проверка). 
Команда Tree
Данная команда перемещает вас в правую область окна, в которой выведено дерево иерархии объектов, и помещает полосу подсветки на тип, который подсвечен в левой области. 
Область дерева иерархии
В правой области окна Hierarchy выводится дерево иерархии для всех объектов, использующихся в текущем модуле. Отношения "предков" и "потомков" показаны линиями, при этом "потомки" расположены слева и ниже своих "предков". 
Чтобы найти объект конкретного типа в сложном дереве иерархии, перейдите обратно в левую область и используйте средство инкрементального поиска (или поиска по возрастанию). Затем выберите в локальном меню элемент Tree (Дерево), чтобы перейти обратно к де
реву иерархии. Соответствующий тип выводится в полосе подсветки. 
При нажатии клавиши Enter для подсвеченного типа объекта/класса выводится окно Inspector (Проверка). 
Локальные меню области дерева иерархии
Локальное меню области дерева иерархии содержит только один элемент - Inspect (Проверка). Когда вы его выбираете, для подсвеченного типа выводится окно проверки типа объекта. Однако, если вы хотите проверить подсвеченный тип, быстрее и проще будет просто
 нажать клавишу Enter. 
                     ЪДДДДДДДДДДДї
          Проверка   і Inspect   і
                     АДДДДДДДДДДДЩ
Окно Object Type Inspector
Турбо отладчик предоставляет новый тип окна Inspector (Проверка) с целью позволить вам проверять детали объектного типа. Это окно проверки типов объектов (Object Type Inspector). В данном окне сведена информация о типе объекта, но оно не относится к како
му-либо отдельному экземпляру этого типа. 
        ЙНН[ю]ННClass LinearGaugeНН4ННН[][]»
        єint±Range::Low±±±±±±±±±±±±±±±±±±±±±±
        єint Range::High                     °
        єint Screen::MaxX                    
        єІ°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°є
        єclass Range *Range::ctr()           є
        єint Range::GetValue()               є
        єint Range::GetLow()                 є
        єint Range::GetHigh()                є
        ИННННННННННННННННННННННННННННННННННННЅ
Рис. 10.2 Окно Object Type Inspector
Окно делится по горизонтали на две области, в верхней из которых выводится список полей данных типа объекта, а в нижней - список имен методов и (если выбранный метод является функцией) возвращаемый функцией тип. Используйте клавишу горизонтальной табуляц
ии для переключения между двумя областями окна Object Type Inspector (Проверка типов объектов). 
Если подсвеченное поле данных является объектным типом или указателем на объектный тип, то нажатие клавиши Enter открывает другое окно проверки типов объектов (Object Type Inspector) для подсвеченного типа. (Это действие идентично выбору элемента Inspect
 в локальном меню этого окна.) Таким образом, сложная вложенная структура объектов может быстро просматриваться при минимальном количестве нажатий клавиш. 
Для краткости параметры методов не показываются в окне проверки типов объектов. Для проверки параметров метода переместите подсветку на метод и нажмите клавишу Enter. Появится окно проверки метода (Inspector). Верхняя область окна выводит на экран адрес 
кода экземпляра типа объекта для выбранного метода и имена и типы всех параметров метода. Нижняя область окна показывает, является ли метод процедурой или функцией. 
Нажатие клавиши Enter в любом месте окна проверки метода или функции элементов классов (Inspector) выводит на передний план окно Module (Модуль) и помещает курсор на код, который реализует проверяемый метод. 
Как и в стандартном окне проверки, нажатие клавиши Esc закрывает текущее окно Inspector (Проверка), а нажатие клавиш Alt-F3 закрывает их все. 
Локальные меню окна Object Type Inspector
Нажатие клавиш Alt-F10 выводит локальное меню любой области. Если разрешено использование сокращений с клавишей Ctrl (с помощью утилиты TDWINST), то вы можете получить элемент локального меню путем нажатия клавиши Ctrl и первой буквы элемента. Верхняя об
ласть (область полей данных объектов) содержит следующие элементы меню: 
                                ЪДДДДДДДДДДДДДДДДДДДДДДї
     Проверка                   і Inspect              і
     Иерархия                   і Hierarchy            і
     Вывод наследования         і Show inherited   Yes і
                                АДДДДДДДДДДДДДДДДДДДДДДЩ
Область полей данных объекта (верхняя)
Локальное меню области Object Data Field (Поле данных объекта) содержит следующие элементы: 
Inspect (Проверка)
Если подсвеченное поле является объектным типом или указателем на него, то для подсвеченного поля открывается новое окно Inspector. 
Hierarchy (Иерархия)
Открывает окно иерархии объектов (Hierarchy) для проверяемого объектного типа или класса. Это окно описано выше. 
Show Inherited (Вывод наследования)
Yes (Да) является значением по умолчанию этого переключателя. Когда он установлен в значение Yes, показываются все поля данных и методы, независимо от того, определены ли они внутри данного типа (проверяемого) объекта (класса), или они унаследованы от ро
дительского (порождающего) типа. Когда переключатель установлен в значение No (Нет), на экран выводятся только определенные внутри проверяемого типа поля и методы. 
Область объектных методов (нижняя)
Перечислим команды локального меню нижней области (области методов объектов): 
Inspect (Проверка)
Для подсвеченного метода открывается окно проверки метода (Inspector). Если вы нажмете клавиши Ctrl-I, а курсор будет при этом находиться выше адреса, показанного в окне проверки метода, то на переднем плане появится окно Module (Модуль), а курсор будет 
находиться на коде, реализующем проверяемый метод. 
Hierarchy (Иерархия)
Открывает окно иерархии объектов (Hierarchy) для проверяемого объекта. Это окно описано выше. 
Show Inherit (Вывод наследования)
Yes (Да) является состоянием по умолчанию для этого переключателя. Когда он установлен в значение Yes, то показываются все методы, независимо от того, определены ли они в проверяемом объекте, или они унаследованы от родительского типа объекта. Если этот 
переключатель установлен в значение No, то показываются только методы, определенные в проверяемом типе объекта. 
Окно Object Instance Inspector
Окна Object Instance Inspector (Проверка экземпляров объектов) обеспечивают информацию о типах объектов, но ничего не говорит о данных, содержащихся в отдельном экземпляре объекта в данный момент выполнения программы. Турбо отладчик TDW предоставляет рас
ширенную форму знакомых уже окон проверки записей специально для проверки экземпляров объектов. 
Откройте это окно путем установки курсора на экземпляр объекта в окне Module (Модуль), затем нажмите клавиши Ctrl-I. 
        ЙН[ю]ННInspecting twННННННННННННН3НН[][]»
        є@75C6:01E8                               
        єScreen::MaxX              500    (Ox1F4) °
        єScreen::MaxY              512    (Ox200) 
        єІ°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°є
        єScreen::Convert       @0000:0000         є
        єScreen::VertVtoA      @0000:0000         є
        єScreen::VertAtoV      @0000:0000         є
        єДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДє
        єclass TextWindow                         є
        ИНННННННННННННННННННННННННННННННННННННННННЅ
Рис. 10.3 Окно Object Instance Inspector
Большинство окон Турбо отладчика TDW, предназначенных для проверки данных записи, имеют две части (области). В верхней области выводятся имена полей записи и их текущие значения, а в нижней - тип поля, подсвеченного в верхней области. Окно проверки экзем
пляра объекта (Object Instance Inspector) предоставляет обе эти области, а также третью область между ними. Эта новая область содержит методы экземпляра объекта с адресами кода для каждого метода. (Адрес кода учитывается полиморфическими объектами и ТВМ.
) 
Локальное меню окна Object Instance Inspector
Каждая из двух верхних областей окна проверки экземпляров объектов (Object Instance Inspector) имеет свое собственное локальное меню, которое выводится на экран путем нажатия клавиш Alt-F10. Здесь вы также можете использовать сокращения с клавишей Ctrl д
ля получения отдельных элементов меню, если их использование разрешено с помощью утилиты TDWINST. 
                                     ЪДДДДДДДДДДДДДДДДДДДДДї
            Диапазон                 і Range...            і
            Изменение                і Change...           і
            Методы                   і Methods         Yes і
            Вывод наследования       і Show inherited  Yes і
                                     іДДДДДДДДДДДДДДДДДДДДДі
            Проверка                 і Inspect             і
            Спуск                    і Descend             і
            Новое выражение          і New expression...   і
            Приведение типа          і Type cast           і
            Иерархия                 і Hierarchy           і
                                     АДДДДДДДДДДДДДДДДДДДДДЩ
Как и в окне проверки записи (Inspector), нижняя область служит только для вывода типа подсвеченного поля и не имеет локального меню. 
Верхняя область, которая содержит поля данных объекта, имеет следующие локальные команды: 
Range... (Диапазон)
Эта команда позволяет выводить на экран границы элементов массива. Если элемент не является массивом или указателем, то эта команда недоступна. 
Change...  (Изменение)
Путем выбора этой команды вы можете загрузить новые значения в подсвеченное поле данных. 
Methods (Методы)
Эта команда является переключателем между состояниями Yes/No (Да/Нет) и с состоянием Yes (Да) по умолчанию. Если переключатель установлен в значение Yes, то методы выводятся в средней области. В состоянии No (Нет) средняя область отсутствует. Этот перекл
ючатель запоминается следующим окном Inspector (Проверка), которое будет открыто. 
Show Inherited (Вывод наследования)
Это элемент, который также переключается между состояниями Yes и No. В состоянии Yes (Да) выводятся все поля данных и методы, независимо от того, определены ли они в проверяемом объекте, или они унаследованы от родительского типа. В состоянии No (Нет) вы
водятся только те поля и методы, которые определены в проверяемом объектном типе. 
Inspect (Проверка)
Как и в предыдущих версиях TDW, выбор этой команды открывает окно проверки данных (Inspector) для подсвеченного поля. Нажатие клавиши Enter над подсвеченным полем ведет к тому же результату. 
Descend (Спуск)
Подсвеченный элемент занимает место элемента в текущем окне Inspector. Не открывается никаких новых окон Inspector. Однако, вы не можете вернуться к предыщему проверяемому полю, как вы могли бы сделать это, если бы использовали параметры Inspect. 
Используйте команду Descend (Спуск) при выполнении трассировки сложных структур данных и когда вы не собираетесь открывать отдельное окно проверки (Inspector) для каждого проверяемого элемента. 
New Expression (Новое выражение)
Эта команда подсказывает вам о необходимости ввести новый элемент данных или выражение для проверки. Новый элемент замещает текущий в окне, а новое окно не открывается. 
Type Cast (Приведение типа)
Позволяет вам для проверяемой записи задать другой тип данных (Byte, Word, Integer, указатель на Char). Данная команда полезна, если окно Inspector содержит идентификатор, для которого отсутствует информация о типе, а также явного задания типа нетипизова
нных указателей. 
Hierarchy (Иерархия)
При выборе данной команды открывается окно иерархии объекта (Hierarchy). Полное описание этого окна приведено выше. 
Средняя и нижняя области
В среднем окне выводятся методы объекта. Единственным отличием между локальным меню области методов и локальным меню области полей данных (верхняя область) является отсутствие команды Change (Изменение). В отличие от полей данных, методы не могут изменят
ься во время выполнения, поэтому нет нужды в такой команде. 
В нижней области выводится тип элемента, подсвеченного в верхних двух областях. 


Яндекс цитирования