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



 

Часть 8


                                     - 75 -
           
           
           
                  8. КОМАНДЫ УПРАВЛЕНИЯ "СТОРОЖЕВЫМИ ОПЕРАТОРАМИ"
               
                                              
               
                                    СОДЕРЖАНИЕ
               
               
                                                                    Лист

               8.   Команды управления "Сторожевыми операторами"....... 75
               8.1. Введение........................................... 76
               8.2. Команда "Установить выражение/область памяти на
                    просмотр" (W)...................................... 77
               8.3. Команда "Установить выражение на контроль" (WP).... 78
               8.4. Команда "Установить выражение/область памяти на
                    контроль по изменению" (TP)........................ 79
               8.5. Команда "Удалить сторожевой оператор" (Y).......... 81
               8.6. Команда "Список сторожевых операторов" (W)......... 82
           
           
.
                                      - 76 -
         
         

               8.1. Введение
                
               В этой главе описаны команды управления "сторожевыми  опера-
         торами",  позволяющие устаноавливать, убирать и распечатывать раз-
         личные сторожевые операторы.
               "Сторожевые операторы" -- спецификации, описывающие  выраже-
         ния  или области памяти для контроля. Некоторые "сторожевые опера-
         торы" также специфицируют условия, при выполнении которых произво-
         дится прерывание вычислительного процесса.
                Команда                      Действие
                Просмотр        Установ выражений или отрезков памяти
                  (W)           на контроль.
                                
                Контроль        Установка    условных      выражений,
                выражений       прерывающих   выполнение   программы,
                  (WP)          если их значение не равно нулю (true).
                                
                Контроль        Установка   выражений,    описывающих
                памяти          области   памяти. CodeView  прерывает
                  (TP)          выполнение программы   при  изменении
                                значений этих областей памяти.

                Удаление        Удаление одного  или всех "сторожевых
                  (Y)           операторов".
                                
                Список сторо-   Список      текущих       "сторожевых
                жевых операто-  операторов".
                ров (W).
                
               Сторожевые операторы остаются в памяти до тех пор,  пока  их
         не  удалят;  при  выполнении команды рестарта они сохраняются. Это
         позволяет создавать целые серии "сторожевых операторов", выполняю-
         щихся все время.
               В оконном режиме "сторожевые операторы"  вводятся  либо  как
         диалоговые  команды, либо через меню. Текущие "сторожевые операто-
         ры" высвечиваются в сторожевом окне, которое находится  между  ме-
         ню-строкой и окном исходного текста.
               В последовательном режиме можно также польэоваться "стороже-
         выми операторами", но там нет сторожевого окна. Используйте коман-
         ду "список сторожевых операторов" для просмотра "сторожевых опера-
         торов" и их значений.
               Примечание:
               "Сторожевой  оператор", контролирующий локальные переменные,
         может быть установлен там, где эти  переменые  определены.  В  том
         случае,  если  переменная не определена, CodeView выдаст сообщение
         UNKNOWN SYNBOL. После выхода из функции значение выражений, в  ко-
         торые  входят недоступные теперь переменные, будет UNKNOWN SYNBOL.
         Для спецификации имен из вызывавших функций,  обращайтесь к ним  в
         виде <функция>.<имя> (см. главу 4).
               
               
                

                                      - 77 -
               
               
               8.2.  Команда "Установить выражение/ область памяти на прос-
         мотр" (W)
         
         
               Эта команда предназначена для установки "сторожевых операто-
         ров", помогающих просматривать значения выражений и отрезков памя-
         ти. Значение или значения, описываемые "сторожевыми  операторами",
         высвечиваются  в  сторожевом  окне в виде текста обычной яркости и
         обновляются при каждом изменении. При  работе  в  последовательном
         режиме нет сторожевого окна, для просмотра "сторожевых операторов"
         и  их значений нужно применять команду "список сторожевых операто-
         ров" (см. раздел 8.5).
               При установке контролируемого выражения  можно  специфициро-
         вать  формат,  в  котором будет высвечиваться его значение. Формат
         указывается через запятую. Если формат не указан,  отладчик  будет
         высвечивать  значение выражения в формате умолчания. Описание фор-
         матов смотри в разделе 6...
               
               Примечание:
               Если ваша  программа  прямо  использует  абсолютные  адреса,
         дамп-команда  и команда вывода выражений могут дать, порой, неожи-
         данный результат. Однако "сторожевые команды"  всегда выводят пра-
         вильное значение. Эта проблема возникает тогда, когда  CodeView  и
         ваша программа используют одну и ту же память.
               Это случается часто, когда программа читает данные из экран-
         ного  буфера  адаптера.  Например, screen -- массив, совпадающий с
         буфером. Тогда DB screen L16 выдаст дамп экрана CodeView, а WB  --
         экран программного вывода.
                
               Mouse.
               Для  ввода  команды установки выражений и памяти на просмотр
         mouse'ом, "укажите" Watch-заголовок из строки  меню  и  "вытащить"
         Add  Watch команду. Открывшееся окошко диалога запросит выражение,
         которое будет поставлено  на просмотр. Введите его и нажмите Enter
         или кнопку mouse'а.
               Этой версией команды нельзя поставить  на  просмотр  отрезок
         памяти, для этого нужно пользоваться диалоговой версией команды.
                
               Клавиатура.
               Для  ввода  команды установки выражений и памяти на просмотр
         спецключами, наберите ALT+W и ALT+A ключи для вызова Add Watch ко-
         манды из Watch-меню. Открывшееся окошко диалога  запросит  выраже-
         ние,  которое будет поставленно на просмотр. Введите его и нажмите
         Enter или кнопку mouse'а.
               Этой версией команды нельзя поставить  на  просмотр  отрезок
         памяти, для этого нужно пользоваться диалоговой версией команды.

               Диалоговая.
               Для  ввода  команды установки выражений и памяти на просмотр
         введите диалоговую команду в следующем синтаксисе:
                W?<выражение>[,<формат>]     ; * Контроль выражения
                W[<тип>] <отрезок>           ; * Контроль отрезка
               Первый вариант команды аналогичен меню-команде. Длина  выра-
         жения,  поставленного на просмотр, должна быть меньше длины сторо-
         жевого окна. Спецификаторы <формата>, описывающие вид,  в  котором
         будет выводиться значение <выражения>, даны в главе 6.
               При  контроле куска памяти <тип> -- это однобуквенный специ-
         фикатор, аналогичный спецификатору дамп-команды, имеющий следующее
         значение:

                                      - 78 -
         
         
                
                Спецификация                 Значение типа.
                
              Пусто                       Предопределенный тип.
                B                         Байтовый тип.
                A                         ASCII
                I                         Целый
                U                         Беззнаковый целый.
                W                         Слово.
                D                         Двойное слово.
                S                         Короткое с плавающей.
                L                         Длинное с плавающей.
                T                         10-байтовое с плавающей.
                
               Предопределенный тип -- тип, который был специфицирован пос-
         ледней Дамп, Enter, контроль памяти или просмотр выражений  коман-
         дами. При старте умалчиваемый тип -- байтовый.
               Данные  будут  высвечиваться  в том же формате, как и данные
         аналогичных Дамп-команд (см. раздел 6.3.1-6.3.10). <Отрезок> может
         быть любой длины, но в сторожевом окне будет высвечиваться  только
         одна  строка данных. Если длина отрезка не специфицирована,  умал-
         чиваемая длина -- один объект.
               Примеры:
                W? code,c                  ; * Пример 1
                W? (float)letters/words,f  ; * Пример 2
                W? buffer L7               ; * Пример 3
               Первый пример -- установка на просмотр  значения  переменной
         code в символьном формате.
               Второй  пример  --  установка на просмотр значения выражения
         (float)letters/words в плавающем формате.
               Третий пример -- установка на просмотр значения первых  семи
         байт buffer'а в байтовом формате.

                
               8.3. Команда "Установить выражение на контроль" (WP)
                
               Watchpoint  команда предназначенна для создания охранных ло-
         гических выражений, прерывающих процесс выполнения программы в том
         случае, когда их эначение не равно нулю (true).
               Эти выражения сохраняются до тех пор,  пока  они  не  будут
         удалены, они сами и их значения высвечиваются в сторожевом окне в
         виде  текста повышенной яркости. В последовательном режиме значе-
         ния этих выражений высвечиваются только командой "Список стороже-
         вых операторов" (см. раздел 8.5).
               Охранные выражения --  это  CodeView-выражения  (см.  главу
         4."Диалоговые  команды").  Не  забывайте, что значения логических
         выражений, составленных из ==, <=, >=, !=, <, > операций, равны 0
         (false) или 1 (true).
               
               Примечание:
               Не путайте операцию присваивания (=) с  операцией  равенства
         (==).  Например, значение выражения count=6 равно 6 и всегда true,
         а значение выражения count==6 истинно только тогда, когда значение
         count 6.
               При постановке выражений на контроль можно указать формат, в

                                      - 79 -
         
         
         котором будет высвечиваться значение выражения, но это вряд ли не-
         обходимо -- ведь эти значения 1 и 0.
           
               Mouse.
               Для ввода команды установки выражений на контроль  mouse'ом,
         "укажите"  Watch-заголовок  из строки меню и "вытащить" Watchpoint
         команду. Открывшееся окошко диалога запросит  охранное  выражение,
         которое будет поставлено  на контроль. Введите его и нажмите Enter
         или кнопку mouse'а.
                
               Клавиатура.
               Для ввода команды установки выражений на контроль спецключа-
         ми,  наберите ALT+W и ALT+W ключи для вызова Watchpoint команды из
         Watch-меню. Открывшееся окошко диалога запросит выражение, которое
         будет поставлено  на контроль. Введите его  и  нажмите  Enter  или
         кнопку mouse'а.
                
               Диалоговая.
               Для  ввода  команды  установки выражений на просмотр введите
         диалоговую команду в следующем синтаксисе:
                WP?<выражение>[,<формат>]
               ,где <выражение> -- это выражение, составленное из  CodeView
         операций  (см. главу 4). Спецификаторы <формата>, описывающие вид,
         в котором будет выводиться значение <выражения>,  даны  в  разделе
         6...
               Примеры:
                WP? lines==11           ; * Пример 1
                WP? buffer[count]<65    ; * Пример 2
               Первый пример -- установка охранного выражения, прерывающего
         процесс  выполнения  программы  тогда,  когда  значение переменной
         lines равно 11.
               Второй пример -- установка охранного выражения, прерывающего
         процесс выполнения программы тогда, когда значение элемента масси-
         ва buffer, индекс которого равен count меньше, 65.

           
               8.4. Команда "Установить выражение/область памяти  на  конт-
         роль по изменению" (TP)
               
               
               Watchpoint команда предназначена для создания охранных  вы-
         ражений,  прерывающих  процесс выполнения программы в том случае,
         когда значение памяти, на которую они указывают, изменится.
               Эти выражения сохраняются до тех пор, пока они не будут уда-
         лены,  они  сами  и  значения адресумой ими памяти высвечиваются в
         сторожевом окне в виде текста повышеной яркости. В  последователь-
         ном  режиме эти "сторожевые операторы" высвечиваются только коман-
         дой "Список сторожевых операторов" (см. раздел 8.5).
               Охранные выражения  --  это  CodeView-выражения  (см.  главу
         4."Диалоговые  команды"), обладающие L-значением. При этом не надо
         забывать, что одно выражение не может ссылаться на область  памяти
         более 128 байт.
               Примеры:  выражение i==10 не обладает L-значением, это логи-
         ческое выражение, принимающее значение true(1) и false(1); не  яв-
         ляется  L-значением и sum1+sum2 (сумма двух целых). Ссылка на мас-

                                      - 80 -
         
         
         сив buffer не возможна, если buffer массив из 130 байт, и  возмож-
         на, если его длина 120 байт.
               
               Примечание:
               Регистровые переменные не обладают L-значнием. Например, ес-
         ли  переменная  i объявлена как redister int i, команда TP? i оши-
         бочна. В этом случае для контроля i пользуйтесь командами ? и WP?:
                >X? i
                3A79:0254       int        div()
                       SI       int        i
                >? i
                10
                >WP? @SI!=10          ; * или WP? i!=10
               При установке контролируемого выражения  можно  специфициро-
         вать  формат, в котором будет высвечиваться значение адресуемой им
         памяти. Формат указывается через запятую. Если формат  не  указан,
         отладчик будет высвечивать значение выражения в формате умолчания.
         Описание форматов смотри в разделе 6...
           
               Mouse.
               Для ввода команды установки памяти  на  контроль  mouse'ом,
         "укажите"   Watch-заголовок   из   строки   меню   и   "вытащите"
         Trasepoint... команду. Открывшееся окошко диалога запросит охран-
         ное L-выражение, которое будет поставлено  на  контроль.  Введите
         его и нажмите Enter или кнопку mouse'а.
                
               Клавиатура.
               Для  ввода команды установки выражений на контроль спецклю-
         чами, наберите ALT+W и ALT+T ключи для вызова  Trasepoint...  ко-
         манды  из Watch-меню. Открывшееся окошко диалога запросит L-выра-
         жение, которое будет поставлено на контроль. Введите его и нажми-
         те Enter или кнопку mouse'а.
                
               Диалоговая.
               Для  ввода  команды  установки выражений на просмотр введите
         диалоговую команду в следующем синтаксисе:
                TP?<выражение>[,<формат>]    ; * Контроль выражения
                TP[<тип>]<отрезок>           ; * Контроль отрезка
               Первый вариант команды аналогичен меню-команде. Длина  выра-
         жения,  поставленного на просмотр, должна быть меньше длины сторо-
         жевого окна. Спецификаторы <формата>, описывающие вид,  в  котором
         будет выводиться значение <выражения>, даны в разделе 6...
               При  контроле куска памяти <тип> -- это однобуквенный специ-
         фикатор, аналогичный спецификатору дамп-команды, имеющему  следую-
         щие значения:
                
                Спецификация                 Значение типа.
                
              Пусто                       Предопределенный тип.
                B                         Байтовый тип.
                A                         ASCII
                I                         Целый
                U                         Беззнаковый целый.
                W                         Слово.
                D                         Двойное слово.

                                      - 81 -
         
         
                S                         Короткое с плавающей.
                L                         Длинное с плавающей.
                T                         10-байтовое с плавающей.
                
               Предопределенный тип -- тип, который был специфицирован пос-
         ледней  Дамп, Enter, контроль памяти или просмотр выражений коман-
         дой. При старте умалчиваемый тип -- байтовый.
               Данные будут высвечиваться в том же формате,  как  и  данные
         аналогичных Дамп-команд (см. раздел 6.3.1-6.3.10). <Отрезок> может
         быть  длиной  не  более 128 байт, в сторожевом окне будет высвечи-
         ваться только одна строка данных. Если длина отрезка не специфици-
         рована, умалчиваемая длина -- один объект.
               Примеры:
                TP? lines               ; * Пример 1
                TP? buffer              ; * Пример 2
               Первый пример -- установка охранного L-выражения,  прерываю-
         щего процесс выполнения программы тогда, когда значение переменной
         lines изменяется.
               Второй  пример -- установка охранного L-выражения, прерываю-
         щего процесс выполнения программы тогда, когда изменится  значение
         хотя бы одного элемента массива buffer.
                            

         
         
               8.5. Команда "Удалить сторожевой оператор" (Y)
                
               Команда  удаления  сторожевых  операторов  предназначена для
         удаления сторожевых операторов, созданных предыдущими командами.
               В оконном режиме при удалении "сторожевого оператора" проис-
         ходит сокращение "сторожевого окна".

               Mouse.
               Для удаления  "сторожевого  оператора"  mouse'ом,  "укажите"
         Watch-заголовок  из строки меню и "вытащите" Delete Watch команду.
         Открывшееся окошко будет содержать все "сторожевые операторы". Для
         удаления необходимого оператора "укажите" его и "щелкните" на нем.
                
               Клавиатура.
               Для удаления "сторожевого оператора"  спецключами,  наберите
         ALT+W и ALT+D ключи для вызова Delete Watch команды из Watch-меню.
         Открывшееся окошко будет содержать все "сторожевые операторы". Для
         удаления  необходимого  оператора  "укажите"  его ключами "стрелка
         вверх","стрелка вниз" и нажмите Enter.
           
               Диалоговая.
               Для ввода команды установки выражений  на  просмотр  введите
         диалоговую команду в следующем синтаксисе:
               Y<номера>,
               где <номер> -- номер сторожевого оператора. В оконном режи-
         ме номера операторов (они отсчитываются  от  0)  высвечиваются  в
         сторожевом окне. В последовательном режиме для получения информа-
         ции  о номерах "сторожевых операторов" пользуйтесь командой "спи-
         сок сторожевых операторов", описанной в разделе 8.5.3.
               Если вместо <номера> указана звездочка (*), то  эта  команда

                                      - 82 -
         
         
         удалит все записи.
               Примеры:
                >Y2      ; * Пример 1
                >Y*      ; * Пример 2
               Первый  пример  -- удаление "сторожевого оператора" номер 2,
         второй пример -- удаление всех сторожевых операторов.
                

               8.6. Команда "Список сторожевых операторов" (W)

               Команда список сторожевых операторов  выводит  список  всех
         сторожевых  операторов,  установленных  ранее, и текущие значения
         сторожевых выражений.
               В последовательном режиме только эта команда позволяет прос-
         матривать "сторожевые операторы" и их значения; в оконном режиме в
         ней  нет нужды: ведь сами "сторожевые опраторы" постоянно высвечи-
         ваются в сторожевом окне.
                
               Mouse.
               Эту команду нельзя ввести mouse'ом.
                
               Клавиатура.
               Эту команду нельзя ввести спецключами.
                
               Диалоговая.
               Для выполнения команды "список сторожевых операторов" введи-
         те диалоговую команду в следующем синтаксисе:
                W
               Она высветит сторожевые операторы в том порядке,  в  котором
         они были введены.
               
               Примечание:
               Командная  буква W -- мнемоника команды контроля выражений и
         памяти. Отличие команды вывода списка сторожевых операторов и  ко-
         манды контроля выражений и памяти состоит в том, что команда выво-
         да списка сторожевых операторов не имеет аргументов.
               
               Примеры:
           >W
           0) code,c  :   I
           1) (float)letters/words,f   :   4.777778
           2) 3F65:0B20  20 20 43 4F 55 4F 54 COUNT
           3) lines==11  :  0
           >
.
               
         
         


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