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



 

Часть 5

               
                                      - 48 -
           
           
                                                                   
                             5. КОМАНДЫ ВЫПОЛНЕНИЯ КОДА
                                                                      
               
               
                                    СОДЕРЖАНИЕ
               
               
                                                                    Лист
                                                                   
           
               5.   Команды выполнения кода........................... 48
               5.1. Введение.......................................... 49
               5.2. Команда "Трассировать" (T)........................ 49
               5.3. Команда "Программный шаг" (P)..................... 50
               5.4. Команда "Выполнить" (G)........................... 51
               5.5. Команда "Выполнять медленно" (E).................. 52
               5.6. Команда "Рестарт" (L)............................. 53
           
           
.
                                      - 49 -
         
         
               5.1. Введение
                           
               Команды "Трассировать" (T), "Программный шаг" (P),  "Выпол-
         нить"  (G)  и  "Выполнять  медленно"  используются для выполнения
         программ. Различия между ними в выполнении кода описаны ниже:
                
               Команда                     Действие
                
         Трассировать (T)            Выполнение   текущей    строки
                                    (исходного текста или ассемблера);
                                    трассировка   функций,   процедур,
                                    прерываний.
                                       
         Программный шаг (P)        Выполнение    текущей   строки
                                    (исходного текста или ассемблера);
                                    без трассировки функций, процедур,
                                    прерываний.
                                       
         Выполнить (G)              Выполние текущей программы.
                                       
         Выполнять медленно (E)     Выполнение текущей программы  в
                                    замедленном режиме.
                                       
         Рестарт (L)                Рестарт текущей программы.
                                       
                                       
               В оконном режиме окно отладки иллюстрирует  выполнение  ко-
         манд трассировки или выполнения перемещением строки подсветки.
               В последовательном режиме текущая строка текста (или ассем-
         блерная  инструкция) высвечивается после выполнения шага команды.
         Формат отображения определяется уровнем отладки. Три уровня отоб-
         ражения последовательного режима описаны в гл. 9 "Команды анализа
         программ".
               В режиме исходного текста (S+)  отладчик  высветит  текущую
         строку  текста,  в режиме ассемблера (S-) -- состояние регистров,
         флагов и текущую ассемблерную инструкцию; в комбинированном режи-
         ме (S&) -- то и другое.
               Команды выполнения кода описаны в разделах 5.1-5.4.
               Примечание.
               Выполнение  программы  можно  прервать,  нажав  CTL+C   или
         CTL+BREAK. Это может понадобиться при зацикливании или для удале-
         ния  сторожевых записей,  замедляющих процесс выполнения. CTL+C и
         CTL+BREAK могут не работать, если ваша программа  использует  эти
         ключи,  или  вы  указали  CodeView стартовую опцию /D (см. раздел
         2.5.8.).
               Если вы имеете IBM PS  &  AT  (или  соместимый)  компьютер,
         пользуйтесь в этом случае SYSTEM-REQUEST ключем.
                

           
               5.2. Команда "Трассировать" (T)
  
               Команда  "Трассировать"  выполняет текущую строку (в режиме
         исходного текста) или ассемблерную  инструкцию,  указанную  парой
         регистров  CS:IP и подсвеченную в оконном режиме строкой выполне-

                                      - 50 -
         
         
         ния.
               Если строка содержит вызов функции, процедуры или  прерыва-
         ния, то CodeView переходит в нее и выполняет ее первую строку.
               Применяйте  команду "Трассировать" для входа в отлаживаемую
         функцию (подпрограмму, прерывание). В том случае,  если  подпрог-
         рамму  нужно  выполнить  как  единое  целое, пользуйтесь командой
         "программный шаг" (P).
               Командой "Трассировать" нельзя протрассирать MS-DOS функции
         (прерывание 0x21).
               В режиме исходного текста  CodeView  трассирует  только  те
         функции,  которые  имеют исходный тест. Функцию printf, например,
         из "C"библиотеки можно протрассировать только в режиме  ассембле-
         ра.
               
               Примечание:
               Команда  "Трассировать"  (T)  использует команду "трассиро-
         вать" 8086 процессора; поэтому ею можно  смело  трассировать  ко-
         манды из ROM-памяти, но при этом там нельзя ставить точки остано-
         ва и пользоваться командой P, выполнение которой в этом случае эк-
         вивалентно команде G.
                
               Mouse.
               Для выполнения команды трассировки "укажите" Trace! заголо-
         вок из строки меню и нажмите левую кнопку.
                
               Клавиатура.
               Для  выполнения команды "Трассировать" нажмите функциональ-
         ный ключ F8.
                
               Диалоговая.
               Для выполнения команды "Трассировать"  наберите  диалоговую
         команду в следующем синтаксисе:
               T[<счетчик>]
               Если опция <счетчик> специфицирована, то команда выполнится
         <счетчик> раз.
               Примеры:
                
         >S+          ; * Пример 1 -- режим исходного текста.
         source
         >.
         73              analyze(code,inword);
                
         >T 4
         90: char code;
         92:  {
         94:   ++letters;
         95:    if (strchr(@AEIOUaeiou@,code)||(strchr(yY,code)&&!inword))
         >
               
               
               5.3. Команда "Программный шаг" (P)
                
               Команда "Программный шаг" выполняет текущую строку исходно-
         го  текста или ассемблерную инструкцию, указанную парой регистров
         CS:IP и подсвеченную в оконном режиме строкой выполнения.
               Если строка содержит вызов функции, процедуры или  прерыва-
         ния, то CodeView выполняет ее и возвращает управление назад.

                                      - 51 -
         
         
               Используйте эту команду для трассировки программ через фун-
         кции.  В том же случае, если вам нужно заглянуть в функцию, поль-
         зуйтесь командой трассировки (T).

               Mouse.
               Для выполнения команды "Программный шаг"  "укажите"  Trace!
         заголовок из строки меню и нажмите правую кнопку.
                
               Клавиатура.
               Для  выполнения  команды "Программный шаг" нажмите функцио-
         нальный ключ F10.
                
               Диалоговая.
               Для выполнения команды "Программный шаг" наберите  диалого-
         вую команду в следующем синтаксисе:
               P[<счетчик>]
               Если опция <счетчик> специфицированна, то команда выполнит-
         ся <счетчик> раз.
               Примеры:
         >S-       ; * Пример 2 -- режим ассемблера.
         assembly
         >P
         AX=0001 BX=0001 CX=0000 DX=0000 SP=1908 SI=04BA DI=1946
         DS=3BB1 ES=3BB1 CS=36CO IP=0237 NV UP EI PL NZ NA PO NC
         36C0:0237 50     PUSH      AX
         >
           
           
           
               5.4. Команда "Выполнить" (G)
 
               Запускает выполнение программы с текущего адреса. Два вари-
         анта  команды: один стартует выполнение до конца программы или до
         первой точки останова, а второй -- до специфицированного адреса.
               Второй вариант команды эквивалентен временному проставлению
         точки останова по этому адресу и выполнению команды Go без  пара-
         метров.
               Выполнение программы командой Go может быть прервано, если:
               - встретится точка останова (BP);
               - программа достигает специфицированного адреса;
               - сработает сторожевая запись (WP или TP);
               - вы  прервете  выполнение  программы  нажатием  CTL+C  или
         CTL+BREAK ключа.
               Если  программ  закончится,  не  встретив  точки  останова,
         CodeView выдаст сообщение:
               Program terminated normaly(<номер>),
         где <номер> -- значение, возращаемое программой (errorlevel код).

               Mouse.
               Для выполнения команды "Выполнить" "укажите" Go!  заголовок
         из строки меню и нажмите любую кнопку.
               Второй вариант команды: укажите строку, до которой вы буде-
         те выполнять программу и нажмите правую кнопку.
                
               Клавиатура.

                                      - 52 -
         
         
               Для  выполнения  команды "Выполнить" нажмите функциональный
         ключ F5. Работает в оконном и последовательном режиме.
               Второй вариант команды: установите курсор на строку, до ко-
         торой вы будете выполнять программу и нажмите функциональный ключ
         F7.
                
               Диалоговая.
               Для выполнения команды "Выполнить" наберите диалоговую  ко-
         манду в следующем синтаксисе:
               G[<адрес останова>]
               Если  <адрес останова> не указан, то это первый вариант ко-
         манды, а если указан, то второй.
               <Адрес останова> может быть  дан  как  имя  (метка),  номер
         строки,  адрес  в <сегмент>:<смещение> формате. Если <сегмент> не
         указан, то берется смещение относительно регистра CS. Если <адрес
         останова> -- номер строки, не содержащей кода,  появится  сообще-
         ние:
               No code in this line number
               Примеры:
           
         >C
           
         Program terminated normally (0)
         >
           
         >S+          ; * Режим исходного текста.
         source
         >C analyze
         22:  int argc;
         >
           
         >S&          ; * Смешанный режим.
         mixed
         >C .38
         AX=13F3 BX=13EA CX=0019 DX=0000 SP=133A SI=04BA DI=1344
         DS=5DA8 ES=5DA8 SS=5DA8 CS=58B4 IP=004B NV UP EI PL NZ NA PO NC
         38:     if((stream=fopen(name,"rb"))==NULL) return (1);
         58B4:004B B86E00   MOV   AX,006E
         >


           
         >S-         ; * Режим ассемблера.
         assembly
         >G 0x2A8
         AX=0049 BX=0049 CX=028F DX=0000 SP=12F2 BP=12F6 SI=04BA DI=1344
         DS=5DAF ES=5DAF SS=5DAF CS=58BB IP=02A8 NV UP EI PL NZ NA PE NC
         58BB:02A8  98    CBW
         >
           
           
                
               5.5. Команда "Выполнять медленно" (E)
                
               Команда "Выполнять медленно" сходна с командой Go без аргу-

                                      - 53 -
         
         
         ментов.  Она  выполняет программу в замедленном режиме (несколько
         строк в секунду). Выполнение начинается с текущего адреса  и  за-
         канчивается, если:
               - встретится точка останова (BP);
               - сработает сторожевая запись (WP или TP);
               -  вы  прервете  выполнение программы нажатием любого ключа
         или кнопки mouse'а.
                
               Mouse.
               Для   выполнения  команды  "Выполнять  медленно"  "укажите"
         Execute заголовок из Run меню.
                
               Клавиатура
               Для  выполнения  команды  "Выполнять  медленно"   "укажите"
         Execute заголовок из Run меню, набрав ALT+R и ALT+E ключи.
                
               Диалоговая
               Для выполнения команды "Выполнять медленно" наберите диало-
         говую команду в следуюшем синтаксисе:
               E
                
               При  выполнении команды в оконном режиме передвижение подс-
         ветки иллюстрирует выполнение программы; в последовательном режи-
         ме вывод команды "Выполнять" зависит от режима отладки  (исходный
         текст,  ассемблерный, смешанный). В режиме микста CodeView выпол-
         няет программу с шагом одна строка исходного текста.
               Важно:
               Команда "Выполнять" имеет командную букву E, как и  команда
         "Ввести". Если команда имеет аргументы, то это Enter команда, ес-
         ли нет, то Execute.
                
                
               5.6. Команда "Рестарт"
                
               Команда "Рестарт" готовит к повторной отладке текущую прог-
         рамму. Все точки останова и сторожевые записи при этом сохраняют-
         ся; счетчики проходов для каждой точки останова устанавливаются в
         1. Аргументы программы, если они не были изменены диалоговой вер-
         сией команды, сохраняются.
               Команда "Рестарт" может быть использована только  для  рес-
         тарта текущей программы. Для загрузки другой программы нужно вый-
         ти из CodeView и перезапустить его с другой программой.
                
               Mouse.
               Для выполнения команды рестарта "укажите" Restart или Start
         заголовок из Run меню. Команда Start аналогична последовательнос-
         ти команд Restart и Go.
                
               Клавиатура.
               Для выполнения команды рестарта "укажите" Restart или Start
         команду из Run меню, набрав ALT+R и ALT+S или ALT+R ключи.
                
               Диалоговая.
               Введите команду в следующем синтаксисе:
               L[<аргументы>]

                                      - 54 -
         
         
               После выполнения этой команды программа готова к выполнению
         с самого начала. Если вы хотите стартовать программу с новыми ар-
         гументами, укажите их. Это можно сделать только в диалоговой вер-
         сии команды.
               Примечание:
               Командная  буква  "L" -- мнемоника команды Load, но Restart
         команда не вступает в противоречие с командой Load, так как  Load
         -- оконная команда из File меню.
               
               Пример:
               >L     ; * рестарт программы с сохранением аргументов.
               >L  6  ; * рестарт программы с новыми аргументами.
               
               


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