ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 3 - 20 - 3. CODEVIEW ЭКРАН СОДЕРЖАНИЕ Лист 3. CodeView экран................................ 20 3.1. Введение...................................... 21 3.2. Работа в оконном режиме....................... 21 3.2.1. Ввод команд спецключами....................... 22 3.2.1.1. Передвижение текста и курсора спецключами..... 22 3.2.1.2. Изменение экрана спецключами.................. 23 3.2.1.3. Контроль выполнения программы спецключами..... 24 3.2.1.4. Выбор меню-команд спецключами................. 25 3.2.2. Выбор меню-команд mouse'ом.................... 25 3.2.2.1. Изменение экрана mouse'ом..................... 26 3.2.2.2. Контроль выполнения программы mouse'ом........ 26 3.2.2.3. Выбор меню-команд mouse'ом.................... 27 3.2.3. Применение меню-команд........................ 28 3.2.3.1. Применение FIle-меню-команд................... 28 3.2.3.2. Применение Search-меню-команд................. 30 3.2.3.3. Применение View-меню-команд................... 31 3.2.3.4. Применение Run-меню-команд.................... 32 3.2.3.5. Применение Watch-меню-команд.................. 33 3.2.3.6. Применение Option-меню........................ 35 3.2.3.7. Применение Calls-меню......................... 37 3.2.4. Help-система.................................. 38 3.3. Последовательный режим работы................. 39 . - 21 - 3.1. Введение CodeView имеет два режима диалога: оконный и последователь- ный. Оба режима полезны, но оконный эффективнее и удобнее. Все пользователи предпочитают оконный режим, если, конечно, hardware их компьютера его разрешает. В оконном режиме оконные меню, функциональные ключи, mouse позволяют быстро выполнять большинство команд. Различные аспекты отладки программ в оконном режиме описаны в разделе 3.2. Последовательный режим хорошо известен многим программис- там, знакомым с SYMDEB или DEBUG отладчиками. Этот режим применя- ется на IBM-несовместимых компьютерах для отладки программ с вво- дом/выводом. Последовательный режим описан в разделе 3.3. 3.2. Работа в оконном режиме На рис.3.1 изображен экран CodeView со всеми открытыми ок- нами. Рис. 3.1. CodeView экран Ё File Search View Run Watch Options Calls Trace! Go! chfs.exe ================================================================================ 0) ymx : 32 ! Add Watch... ! ! AX = 6000 1) xmx,c : ! Watchpoint... ! ! BX = 0005 =========================! Tracepoint... !=========================! CX = 7530 56: fd=open ( "2! Delete Watch... ! ! DX = 0236 57: lseek( fd,80!-----------------! ! SP = A836 58: read( fd, buffer.mas+1,sizemax ); ! BP = A836 59: for ( dinit() ; ; ) ! SI = 00E4 60: { ! DI = A942 61: switch ( getch() ) ! DS = 4305 62: { ! ES = 4305 63: /*----------------------------------------------------! SS = 4305 64: case 0: switch ( getch() ) ! CS = 41C2 65: { ! IP = 004E 66: case 71 :--y;chy(); /* вверх-влево */! novrflow 67: case 75 :--x;chx(); /* влево */ ! up =====================================================================! enable Microsoft (R) CodeView (TM) Version 1.00 ! negative Copyright (C) Microsoft Corp 1986. All rights reserved. ! not zero ! no auxcy >db buffer.mas L 20 ! even 4305:0230 00 00 00-00 00 00 00 00 00 00 00 ....! no carry 4305:0240 00 00 00 00 00 00 00 00-00 .........! > Элементы дисплея описаны ниже: - 22 - 1) окно отладки, содержащее отлаживаемую программу. Оно со- держит, например, исходный "C" текст, или ассемблерный код, или любой специфицированный текстовый файл; 2) текущая строка программы, отмеченная негативом (или дру- гим цветом). Она не обязательно должна быть видима, программу можно свободно листать; 3) строка, содержащая точку останова и отмеченная повышен- ной яркостью; 4) окно диалога, в которое, в ответ на CodeView приглаше- ние, вводятся диалоговые команды. При просмотре буфера диалога его можно листать верх/вниз; 5) курсор, находящийся в строке ввода команды. Листая окно, можно перемещать его верх/вниз или переместить его из окна диало- га в окно программы; 6) окно регистров, показывающее текущее значение регистров и флагов процессора. Его можно открывать/закрывать; 7) вертикальная линия, разделяющая окна. Стрелки на ее кон- цах используются при листании окон mouse'ом; 8) сторожевое окно, в котором высвечивается текущее состоя- ние переменных или выражений, поставленных на контроль. Оно разд- вигается автоматически при создании сторожевых операторов; 9) строка меню, содержащая заголовки меню и команд; их мож- но активизировать спецключами или mouse'ом. Заголовки с восклица- тельными знаками -- команды, остальные -- меню; 10) меню, открытое через соответствующий заголовок. На ри- сунке открыто Watch-меню; 11) текущая меню-команда, отмеченная голубым цветом или не- гативом. Выбор команды осуществляется передвижением подсветки; 12) mouse-указатель, указывающий текущее положение mouse'а. Появляется только тогда, когда в системе инстоллирован mouse; 13) диалоговое окошко (на рисунке его нет) в центре дисп- лея. Предназначено для работы с командами меню (например, вво- да/удаления сторжевых операторов); 14) окошко ошибок - для демонстрации ошибок и предупрежде- ний. 3.2.1. Ввод команд спецключами CodeView имеет два вида команд: оконные и диалоговые. Диа- логовые команды вводятся в окне диалога, их синтаксис описан в главе 4 "Диалоговые команды". Многие из CodeView команд доступны через оконный интерфейс. Оконные версии команд более просты, их можно ввести, используя функциональные ключи, ALT и CTL комбинации или команды-стрелки. Большинство оконных команд можно также ввести с помощью mouse'а (это будет описано в разделе 3.1.2.). Ключ-команды описа- ны далее. Пересечение ключ-команд и mouse-команд дано в приложе- нии 12.1.3. 3.2.1.1. Передвижение текста и курсора спецключами Следующие ключи передвигают курсор или листают вверх/вниз - 23 - содержимое окна отладки и диалога: Ключ Функция F6 Перемещает курсор из окна диалога в окно отладки и назад. CTL+U Перемещает разделитель окон диалога и отладки на строку вверх. CTL+D Перемещает разделитель окон диалога и отладки на строку вниз. стрелка Перемещает курсор на строку вверх в вверх окне диалога или отладки. стрелка Перемещает курсор на строку вниз в вниз окне диалога или отладки. PGUP Листает вверх на одну страницу теку- щее окно (диалога или отладки). Кур- сор при этом сохраняет текущее поло- жение. PGDN Листает вниз на одну страницу теку- щее окно (диалога или отладки). Кур- сор при этом сохраняет текущее поло- ение. HOME Переход в начало текущего окна. Если курсор в окне отладки, то он перед- вигается на начало исходного текста, если в окне диалога, то на начало протокола (при переполнении буфера диалога начало протокола теряется). END Переход в конец текущего окна. Если курсор в окне отладки, то он перед- вигается в конец исходного текста, если в окне диалога, то на CodeView приглашение ('>') в конце буфера. 3.2.1.2. Изменение экрана спецключами Ключ Функция F1 Инициализация окна помощи (help'а) Help-система детально описана в разделе 3.1.4. Эта команда может быть выполнена как Help команда View меню, см. раздел 3.1.3.3. F2 Открывание/закрывание окна регистров. - 24 - Эта команда может быть выполнена как Registers команда Options меню, см. раздел 3.1.3.6. F3 Переключение между режимом исходного текста и ассемблера. Эту команду можно выполнить через меню. F4 Переключение в экран вывода программы. Для возврата в CodeView нажмите любую клавишу. Эту команду можно выполнить через меню (см. раздел 3.1.3.3). 3.2.1.3. Контроль выполнения программы спецключами Ключ Функция F5 Выполнить до следующей точки останова или до конца программы, если точек останова нет. Аналогична диалоговой команде G без аргумента. F7 Выполнить программу до строки, помеченной курсором, или до конца, если это невозможно. F8 Выполнить команду трассировки. CodeView выполняет текущую строку исходного текста или ассемблерный инструкцию. Если это вызов функции, подпрограммы, прерывания, то CodeView проваливается в вызываемую программу. Эта команда не трассирует MS-DOS функции (прерывание 0x21). F9 Установ/стирание точки останова в той строке, где находится курсор. Если в текущей строке есть точка останова, то стереть ее, если нет, то поставить; если курсор находится в окне диалога, то отладчик выдаст соответствующее предупреждение. F10 Выполнить команду "программный шаг". Аналогична команде трассировки (F8), но при этом CodeView не "проваливается" в функции, подпрограммы, прерывания. Важно: Вы можете прервать выполнение программы нажатием CTL+C или CTL+BREAK. Это полезно, если ваша программа зациклилась или ее выполнение замедляют сторожевые операторы. Стартовые опции, зап- - 25 - рещающие их применение, описаны в разделе 2.5.8. 3.2.1.4. Выбор меню-команд спецключами CodeView имеет семь меню. В этом разделе описано как произ- водить выбор меню. Меню-команды описаны в п. 3.1.3. Меню-линейка вверху экрана имеет девять заголовков: File, Search, View, Run, Watch, Options, Calls, Trase!, Go!. Первые семь из них - меню, последние два -- команды. Trase! и Go! пред- назначены для использования mouse'ом, но их можно активизировать нажатием ALT+T (ALT+G) и Enter. Восклицательный знак в заголовке указывает, что этот заголовок -- команда, а не меню. Некоторые команды проще выполнить функциональным ключем (F1-10), чем через меню-интерфейс. Алгоритм выбора команд из меню: 1) открыть меню, нажав ALT и первую букву заголовка меню. Например, ALT+S открывает Search меню. Заголовок меню при этом подсвечивается, само меню открывается под ним; 2) возможны три пути выбора команды из открытого меню: - с помощью ключей стрелка вниз и стрелка вверх произвести выбор команды, перемещая подсветку; нажать Enter; - нажать первую букву выбираемой команды и нажать Enter; - нажать первую букву выбираемой команды совместно с ALT. В этом случае нет необходимости подтверждать команду Enter'ом; 3) после выбора команды произойдет одно из трех: - для большинства команд: команда будет выполнена немедлен- но; - для команд-опций: будет выдано сообщение, что опция вклю- чена/выключена; - для команд поиска и контроля: будет продолжен диалог; 4) если диалог продолжится, то откроется окошко диалога. Заполните его и нажмите Enter. Например, окошко диалога команды Find... запросит регулярное выражение для поиска (см. п. 3.1.3.2. использование Search меню и приложение 12.2 "Регулярные выраже- ния"). Если ответ правилен, команда выполнится, если нет, то поя- вится окошко с сообщением об ошибке. Нажмите любой ключ для возв- рата. В любой точке этого процесса можно нажать ESC для снятия команды. Если меню выбрано, можно нажать ключи стрелка влево и стрелка вправо для перехода к соседнему меню. 3.2.2. Выбор меню-команд mouse'ом CodeView отладчик может работать с MicroSoft mouse'ом (и некоторыми совместимыми устройствами). Следующие термины употреб- ляются в описании путей выбора и выполнения команд mouse'ом: Терм Определение Указать Передвинуть mouse-указатель на выби- (Point) раемый заголовок. - 26 - Щелкнуть Быстро нажать и отпустить mouse кноп- (Click) ку. Тащить Производить перемещение mouse ука- (Drag) зателя при нажатой кнопке mouse'а. CodeView использует обе mouse кнопки. Термы "щелкнуть левой", "щелкнуть правой", "щелкнуть обеими" и "щелкнуть любой" обозначают соответственно использование левой и правой кнопки mouse'а. 3.2.2.1. Изменение экрана mouse'ом Вид CodeView экрана можно изменить, "указав" один из его элементов, "щелкнув" на нем или "протащив" его: Элемент Действие Двойная линия- Тащить ее вверх или вниз в зави- разделитель окон симости от того, что вам нужно. текста и далога. Стрелка вниз или Указать ее и щелкнуть для пере- стрелка верх на мещения текста соответствующего вертикальной ли- окна вверх/вниз. нии-разделителе. Щелчки имеют следующее значение: левый щелчок -- перемещение на одну строку; правый щелчок -- перемещение на одну страницу; щелчек обеими -- перемещение на начало или конец текущего окна. Некоторые меню-команды также меняют вид экрана. Более под- робно см. раздел 3.2.3, описывающий меню-команды. 3.2.2.2. Контроль выполнения программы mouse'ом Выполнение программы можно контролировать mouse'ом: Элемент Действие Строка ис- Указать ее и щелкнуть. Кнопки mouse'а ходного тек- имеют следующее значение: ста или ас- "левый щелчок" -- если на этой стро- семблерная ке нет точки останова, то она инструкция. будет установлена, если есть, то будет убрана; "правый щелчок" -- установить вре- менную точку останова и выпол- нить программу до конца или ближайшей точки останова. - 27 - Если выбранная строка не имеет выпол- няемого кода (например, объявление или комментарий), то CodeView выдаст соответстующее предупреждение. Trace! заголо- "Указать" и "щелкнуть". Кнопки mouse'а вок в строке имеют следующее значение: меню. "левый щелчок" -- выполние команды трассировки. CodeView выполняет следующую строку исходного текс- та или ассемблерную инструкцию. Если она содержит вызов функции. подпрограммы, прерывания, то CodeView "проваливается" в нее (за исключением прерывания 0x21). "правый щелчок" -- выполние команды "программный шаг". CodeView вы- полняет следующую строку исход- ного текста или ассемблерную инструкцию. Если она содержит вызов функции, подпрограммы, прерывания, то CodeView не "проваливается" в нее, произво- дит вызов и возврат. Эти две команды отличаются друг от друга вызовом подпрограмм, функций, прерываний. Go! заголовок "Указать" и "щелкнуть" любой из mouse в строке меню. кнопок. Команда выполняет программу до первой точки останова или до конца, если точки останова не были встречены. Флаги в окне "Указать" имя флага и "щелкнуть" любой регистров. кнопкой mouse'а для инвертирования флага. Имя флага изменится в соответ- ствии со статусом и, если вы работа- ете в цветном режиме, изменится его цвет. Важно: Вы можете прервать выполнение программы с помощью CTL+BREAK и CTL+C. См подробнее разделы 3.2.1.3 и 2.5.8. 3.2.2.3. Выбор меню-команд mouse'ом CodeView отладчик имеет 7 меню. В этом разделе описан алго- ритм выбора меню-команд mouse'ом. Сами меню описаны в разделе 3.1.3. Меню-строка содержит 9 заголовков: File, Search, View, Run, Watch, Options, Calls, Trase!, Go!. Первые семь из них -- меню, последние два -- команды, выполняемые mouse'ом. Алгоритм раскры- тия меню и выбора из него команды следующий: 1) открыть меню, "указав" заголовок меню из строки меню за- - 28 - головков. Откройте, например, Search меню; 2) mouse-указателем на заголовке нажмите любую из кнопок mouse'а. Под заголовком появится окошко меню. Например, если был выбран Search-заголовок, то под ним появится Search-меню; 3) не отпуская кнопку mouse'а, перемещая подсветку, произ- ведите выбор команды. Выберите, например, команду Find. При пе- редвижении указателя mouse'а за границы меню, подсветка исчезает. Однако, пока кнопка не отжата, можно вернуть указатель mouse'а и произвести выбор; 4) если команда выбрана, отпустите mouse-кнопку (например, на команде Find). Возможны следующие три продолжения: - для большинства команд: команда будет выполнена немедлен- но; - для команд опций: будет выдано сообщение, что опция вклю- чена/выключена; - для команд поиска и контроля: будет продолжен диалог; 5) если диалог будет продолжен, то откроется окошко диало- га. Заполните его и нажмите Enter. Например, появившееся окошко диалога команды Find... запросит регулярное выражение поиска (см. 3.1.3.2. "Использование Search меню" и приложение 12.2 "Регуляр- ные выражения"). Если ответ правилен, команда выполнится, если нет, то поя- вится окошко с сообщением об ошибке. Для возврата в процесс от- ладки нажмите любой ключ или кнопку mouse'а. Для выхода из меню уведите курсор mouse'а в сторону и от- пустите его кнопку. Для перехода в другое меню переведите курсор mouse'а на другой заголовок. 3.2.3. Применение меню-команд В этом разделе описаны команды из меню. Они могут быть вы- полнены спецключами (см. раздел 3.2.1.) или mouse'ом (см. раздел 3.2.2.). 3.2.3.1. Применение File-меню-команд File-меню состоит из команд для работы с файлами исходного текста программы. File-меню показано на рис.3.2. и описано ниже: Рис. 3.2. File-меню Ё File Search View Run Watch Options Calls Trace! Go! chfs.exe ==============================! chfs.c !======================================== ! Load... !32 ! AX = 6000 ! Shell ! ! BX = 0005 ! Quit !==========================================================! CX = 7530 !---------! fd=open ( "24-32.fon",0x8000); DX = 0236 Команда Действие Load... Загрузка в окно отладки нового текстового файла. При вызове этой команды диалоговое окошко запросит - 29 - имя загружаемого файла. Файл должен быть текстовым, т.е. первые 128 байт не должны содержать графических символов и русских букв. Он будет высвечиваться в окне отладки вместо текущего (при переключении в режим исходного текста). После просмотра файла нет необходимости загружать пер- воначальный файл, он загрузится при выполнении любой из команд. Точки останова при этом сохраняются. Нет необходимости в загрузке нового файла для просмотра исходного текста другого модуля. CodeView автоматически переключает текст при входе в соответствующий модуль. Команда загрузки исходных файлов не является необходимой, но она может понадобиться при установке точек останова в строках различных модулей. Примечание: Если CodeView не найдет исходный файл при входе в какой-ли- бо модуль, то он запросит через диалоговое окно его имя и path. Введите их, если файл находится в другом каталоге, или нажмите Enter, если файла нет. В этом случае этот модуль сможет отлажи- ваться только в режиме ассемблера. Shell Временный выход в систему для выполнения MS-DOS'овских команд или программ. Команда MS-DOS'а Exit возвращает в отладчик. Shell-команда сохраняет текущий процесс в памяти и загружает второй командный процессор Command.Com. Это требует много памяти (более 200К) под отладчик, Command.Com, символьные таблицы и отлаживаемую программу. Если памяти не хватает, появится сообщение об ошибке. Shell-команда не будет работать правильно, если не была выполнена инициализирующая часть программы. Для выполнения "C"старт кодов необходимо после старта или рестарта CodeView выполнить программу до любой точки, например, набрав команду Gmain. Quit Возврат в MS-DOS. - 30 - 3.2.3.2. Применение Search меню-команд Search-меню содержит команды поиска строк в текстовом файле и меток выполняемого кода. Search меню показано ниже на рис.3.3. Рис. 3.3. Search-меню Ё File Search View Run Watch Options Calls Trace! Go! chfs.exe ==============================! chfs.c !======================================== 0) ymx! Find... ! ! AX = 6000 1) xmx! Next ! ! BX = 0005 ======! Previous !===================================================! CX = 7530 56: ! Label... !en ( "24-32.fon",0x8000); ! DX = 0236 57: !==========!( fd,80L,0); ! SP = A836 58: read( fd, buffer.mas+1,sizemax ); ! BP = A836 Команда Действие Find... Поиск строк в текущем файле исходного текста. После вызова этой команды, диалоговое окошко запросит выражение для поиска. Введите регулярное выражение, специфицирующее искомую строку и нажмите Enter. CodeView будет искать ее с текущей позиции и до конца файла. Если оно найдено, курсор переместится в первую строку, содержащую это выражение, если нет, то появится окошко с сообщением об ошибке. При работе в ассемблерном режиме, по нахождению искомой строки CodeView автоматически переключится в режим исходного текста. Регулярные выражения -- метод спецификации переменной текстовой строки. Этот метод заимствован из Xenix'а и Unix'а и похож на метод использования групповых имен в MS-DOS'е. Регулярные выражения описаны в приложении 12.2. Next Поиск следющей строки по текущему регулярному выражению, введеному командой Find... . CodeView автоматически переходит на начало файла, если это реглярное выражение отсутствует между текущей точкой и концом файла. Если этого выражения нет в текущем файле (например, после ввода Find-выражения был загружен другой - 31 - файл), CodeView выдаст сообщение об ошибке окошке сообщений. Previous Поиск предыдущей строки по текущему регулярному выражению, введеному командой Find... . CodeView автоматически переходит на конец файла, если это регулярное выражение отсутствует между текущей точкой и началом файла. Если этого выражения нет в текущем файле (например, после ввода Find-выражения был загружен другой файл), CodeView выдаст сообщение об ошибке в окошке сообщений. Label... Поиск метки в выполняемом коде. Метка должна быть именем функции или ассемблерной меткой (например, __astart из "C"-библиотеки времени исполнения). По нахождении метки CodeView переключается в ассемблерный режим. Если метка отсутствует, появится окошко сообщений с сообщением об ошибке. 3.2.3.3. Применение View меню-команд View меню содержит команды переключения между ассемблерным режимом и режимом исходного текста, переключения в экран вывода программы, экран помощи. Некоторые из этих команд продублированы функциональными ключами (см. рис. 3.4.). Рис. 3.4. View меню Ё File Search View Run Watch Options Calls Trace! Go! chfs.exe ================================!hfs.c !=============================!========== 0) ymx : 32 ! Help F1 ! ! AX = 6000 1) xmx,c : ! Source F3 ! ! BX = 0005 ==============! Assembly F3 !====================================! CX = 7530 56: f! Output F4 !",0x8000); ! DX = 0236 57: l! Evaluate... ! ! SP = A836 58: r!-----------------!+1,sizemax ); ! BP = A836 Команда Действие Help Открыть меню помощи (см. раздел 3.1.4.) Source Переключение из ассемблерного - 32 - режима в режим исходного текста. Если исходный текст отсутствует, команда игнорируется. Assembly Переключение из режима исходного текста в режим ассемблера. Если вы находитесь в режиме ассемблера, команда игнорируется. Output Переключение с CodeView экрана в экран вывода. Если CodeView не сможет перейти в экран вывода, или если экран "запортится", то CodeView должен быть перевызван с опцией /S (см. раздел 2.3.3.). Evaluate... Вычисление "C"выражений. После выбора этой команды открывшееся окошко диалога запросит выражение для вычисления. Введите "C"выражение, распознаваемое и вычисляемое CodeView (см. главу 4 "Диалоговые команды"). Значение выражения появится в диалоговом окне. Команда аналогична диалоговой команде "Вычислить выражение". Можно специфицировать формат, в котором будет высвечиваться выражение. Тип спецификации следуюций: <,> |