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



 

Часть 2


                                     - 9 -
           
         

                                                        
                           2. ПЕРВОНАЧАЛЬНОЕ ЗНАКОМСТВО
                                                       
               
                                    СОДЕРЖАНИЕ
                                                               
                                                                     Лист
                                           
               2.     Первоначальное знакомство......................  9
               2.1.   Подготовка "C" программ........................ 10
               2.1.1. Требования к "C" программам.................... 10
               2.1.2. Компиляция "C" программ........................ 10
               2.1.3. Линкование объектных файлов.................... 11
               2.2.   Начальный запуск............................... 11
               2.3.   Стартовые опции................................ 13
               2.3.1. Старт в черно-белом режиме..................... 14
               2.3.2. Спецификация стартовых команд.................. 15
               2.3.3. Установка режима разделения экрана............. 15
               2.3.4. Установка оконного или последовательного режи-
                      ма диалога..................................... 16
               2.3.5. Отключение mouse'а............................. 17
               2.3.6. Переключение EGA-адаптера в 43-строчный режим.. 17
               2.3.7. Отладка с двумя дисплеями...................... 18
               2.3.8. Включение/выключение IBM-специфичных ловушек... 18
               2.4.   Работа CodeView с макроассемблером............. 18
           
           
.
                                      - 10 -
         
         
                
               2.1. Подготовка "C" программ
                
               Отлаживаемый  загрузочный  файл  должен  быть в специальном
         формате, содержащем информацию о номерах строк  и  таблицу  имен.
         Для  получения этого формата необходимо применять специальные оп-
         ции компилятора и линкера. Если загрузочный файл не  будет  иметь
         этой  информации, CodeView не сможет связать исходный текст с ад-
         ресами кода; программу можно будет отлаживать  только  на  уровне
         ассемблера, что существенно уменьшит возможности отладчика.
               В  п. 2.1.1 - 2.1.3 описаны требования к "C"программам, не-
         обходимые опции транслятора и линкера.
         
               
               2.1.1 Требования к "C"программам
                     
               Для удобства работы с CodeView требуется выполнять  следую-
         щие соглашения:
               1)  Программу  отлаживать  легче, если в исходном тексте на
         каждой строке находится не более одного  оператора.  Например,  в
         "C"строке:
               code=buffer[count];  if(code=='\n')++lines;  нельзя поставить
         точку останова на операторе ++lines;  или  if(code=='\n').  В  этом
         смысле фрагмент программы:
               code=buffer[count];
                   if(code=='\n')
                         ++lines;
         лучше.
               2) Макросы также затрудняют отладку. Не проблема, если мак-
         рос тривиален:
               #define sizmax 100
               Но отладка программы с макросом:
               #define ququ        do { \
                                       ++i;\
                                       } while(i<100);
         совсем не проста.
               Не  стоит пользоваться и include'ами, порождающими машинный
         код, так как отладчик не сможет связать include-файл с  выполняе-
         мым кодом; используйте include-файлы только для макросов. Если же
         текст  программы  состоит из нескольких файлов, оттранслируйте их
         отдельно и слинкуйте: CodeView поддерживает отладку  многомодуль-
         ных программ.
               ЗАМЕЧАНИЕ.
               Не  употребляйте в первых 128 байтах текста программы русс-
         кие буквы и графические символы. В некоторых  случаях  это  может
         стать серьезным препятствием (см. п. 3.1.3.1).

                                     
               2.1.2. Компиляция "C"программ
                           
               При  компиляции "C"программ под отладчик употребляйте опцию
         транслятора /Zi, заставляющую  компилятор  включать  в  объектный
         файл  информацию  о  номерах строк и создавать таблицу имен. Если
         таблица имен какого-то модуля не нужна, компилируйте этот  модуль
         с  ключем  /Zd.  Загрузочный  файл при этом будет занимать меньше

                                      - 11 -
         
         
         места в памяти и на диске, но при отладке этого модуля будут дос-
         тупны значения глобальных переменных и исходный текст; станут не-
         доступными только локальные переменные подпрограмм.
               Кроме того, вам, наверно, понадобится опция /Od,  выключаю-
         щая  оптимизацию.  Оптимизация повышает эффективность кода, но ее
         результатом может быть такое несоответствие кода и исходного тек-
         ста, которое сделает отладку практически невозможной.
               Пример:
                
               msc count /Zi /Od
                
               Эта компиляция подготовит объектный файл count.obj, увязан-
         ный с count.c.
                                                                          
               
               2.1.3 Линкование объектных файлов
                       
               При линковании объектных файлов под отладчик применяйте оп-
         цию /CODEVIEW (сокращенно /CO). Эта опция согласует адреса загру-
         зочного файла с таблицами имен и номерами строк файлов  исходного
         текста программы.
               Другие  опции  для  отладки не нужны, но можно употреблять,
         например, опции /MAP или /PAUSE.
               
               ПРЕДУПРЕЖДЕНИЕ.
               Не пользуйтесь опцией линкера /EXEPACK совместно с /CO, так
         как она убирает всю символьную информацию из загрузочного  файла.
         CodeView,  получив  упакованный файл, выдаст предупреждение и пе-
         реключится в ассемблерный режим; отладка в режиме исходного текс-
         та станет невозможна.
               Загрузочный файл, слинкованный с опцией /CO,  может  выпол-
         няться  MS-DOS'ом  как  и  любой  другой, но он будет значительно
         больше.
               Примеры.
               link /CO count
               cl /Zi /Od count.c
               Первый пример - линкование объектного файла, созданного
         компиляцией из предыдущего раздела. Линкер включит в загрузочный
         файл информацию для CodeView отладчика.
               Второй пример - совместная компиляция и линкование. Нет не-
         обходимости специфицировать /CO опцию, так как управляющая прог-
         рамма CL укажет ее автоматически, "увидев" опцию /Zi.
                
                                      
               2.2 Начальный запуск
                
               Перед началом работы убедитесь, все  ли  необходимые  файлы
         находятся на своих местах:
                
                Файл                       Место
                
                CV.EXE                CodeView    программа;    место
                                  нахождения -- текущий  каталог  или
                                  любой  каталог доступный по PATH'у.
                                  Если   MicroSoft   "C"   установлен

                                      - 12 -
         
         
                                  согласно   MicroSoft   C   Compiler
                                  User's Guide, то он должен  быть  в
                                  \BIN директории.
                                                    
                CV.HLP                Файл, который  содержит   меню-
                                  подсказки.    Если    вы     хотите
                                  пользоваться   help'ом   в процессе
                                  работы с отладчиком, то  этот  файл
                                  должен  находиться  либо  в текущем
                                  каталоге, либо  каталоге  доступном
                                  по   PATH'у.   Если  MicroSoft  "C"
                                  установлен  согласно  MicroSoft   C
                                  Compiler User's Guide, то он должен
                                  быть в \BIN  директории.  Если  при
                                  вызове подсказки отладчик не найдет
                                  этого   файла,   то    он    выдаст
                                  соответствующее сообщение.
                                 
             <Программа>.EXE          Загрузочный  файл "C"программы,
                                  которую вы  хотите  отлаживать;  ее
                                  местонахождение  -- текущий каталог
                                  или  диск и каталог,  который   был
                                  специфицирован при старте CodeView.
                                  Если  файл  не   найден,   CodeView
                                  выдаст   сообщение   об   ошибке  и
                                  закончит свою работу.
                                  
             <Программа>.C            Обычно  находится   в   текущем
                                  каталоге.     Однако,    если    вы
                                  специфицировали   место   исходного
                                  файла     при     компиляции,    то
                                  спецификация   становится    частью
                                  загрузочного файла, и отладчик ищет
                                  файл по этой спецификации.  Пример:
                                  при  компиляциии  MSC \C\DEMO, файл
                                  ищется в каталоге \C; MSC DEMO -- в
                                  текущем  каталоге. Если CodeView не
                                  находит  исходного  файла,  то   он
                                  запрашивает  путь к нему. Нажатие в
                                  ответ  Enter  говорит  о  том,  что
                                  исходный  текст  не нужен и отладка
                                  будет   производится    на   уровне
                                  ассемблера.
                                 
               Вызов отладчика осуществляется в формате:
               CV [<опции>] <спецификации файла> [<аргументы>], где <оп-
         ции> -- опции CodeView отладчика (см. п. 2.3), <спецификации фай-
         ла> -- имя .COM или .EXE файла с возможным к нему путем, а <аргу-
         менты> -- аргументы программы. При попытке загрузить невыполняе-
         мый файл CodeView заканчивает свою работу с сообщением:
               
               Not an executable file
                
               После линкования те "C" и ассемблерные программы, которые
         будут отлаживаться на уровне исходного текста, должны иметь рас-

                                      - 13 -
         
         
         ширение .EXE. Файлы с расширением .COM могут отлаживаться только
         в ассемблерном режиме. Программы с оверлеями не могут отлаживать-
         ся CodeView отладчиком.
               Если <спецификация файла> указывается без расширения, то по
         умолчанию берется расширение .EXE. Если файл не в CodeView форма-
         те, то CodeView распознает это, выдает сообщение:
                
               No symbolic information
           
         и переходит в ассемблерный режим.
               
               Пример вызова CodeView отладчика:
                
               CV sieve
         
               При работе на IBM компьютерах оконный режим устанавливается
         автоматически; на не-IBM-компьютере  по  умолчанию  будет  выбран
         последовательный  режим. Явное указание опций может переназначать
         режим, выбираемый при старте.
               Если ваша программа -- "C"программа, то CodeView автомати-
         чески переключится в режим исходного текста. В этом режиме необ-
         ходимо выполнить одну команду трассировки для выполнения инициа-
         лизирующей части программы и выхода на начало отлаживаемой прог-
         раммы.
                
                
               2.3. Стартовые опции
                
               Применяя стартовые опции, можно изменить режим,  в  котором
         будет работать CodeView после старта. Опции специфицируются с по-
         мощью  наклонной  '/'  или минуса '-'; имя отлаживаемого файла не
         должно содержать в себе этих символов. В командной  строке  можно
         задавать  более  одной опции, но они дожны быть согласованы между
         собой.
               Примечание.
               CodeView не анализирует  различия  между  компьютерами,  он
         распознает IBM компьютер, опрашивая PS-DOS.
               Далее описаны ситуации, в которых могут понадобиться опции:
                       
                               Если                           То
                
                Вы имеете  IBM-совместимый компьютер          /W
                и хотите работать в оконном режиме.
                                     
                Вы имеете одноцветный дисплей, цветной        /B
                графический  адаптер (CGA),  IBM  или
                IBM-совместимый  компьютер и   хотите
                отлаживать черно-белую программу.
                
                Вы отлаживаете графическую программу          /S
                и хотите  просматривать экран вывода
                программы.
                
                Вы отлаживаете программу, использующую
                многостраничность  дисплея,  и  хотите        /S

                                      - 14 -
         
         
                просматривать экран вывода программы.
                
                Вы   работаете  на   не-IBM-совместимом
                компьютере и хотите просматривать экран       /S
                вывода программы.
                
                Вы работаете с IBM-совместимым компью-
                тером  и  отлаживаете   программы,  не        /F
                пользующиеся  графикой и многостранич-
                ностью экрана.
                
                Вы  имеете  IBM  компьютер,  но хотите        /T
                отлаживаться в последовательном режиме.
                
                Вы имеете mouse, но не хотите им поль-        /M
                зоваться в отладчике.
                
                Вы хотите 43-строчный режим дисплея и
                ваш компьютер имеет Графический адап-         /43
                тер высокого разрешения (EGA).
                
                Вы хотите чтобы CodeView отладчик вы-          /C
                полнил серию команд при старте.
                
                Вы имеете 2 видеоадаптера и дисплея и          /2
                хотите  один из  них сделать дисплеем
                вывода.
                
                Выключение  IBM-специфичных   функций
                (таких  как   CTL+C,  CTL+BREAK)  для          /D
                IBM-плохосовместимых компьютеров.
                
                Расширение возможностей отладчика IBM-         /I
                специфическими  функциями   (CTL+C  и
                CTL+BREAK).

                
               2.3.1. Старт в черно-белом режиме
                
               Опция:
                
               /B : -B
                
               /B  опция  позволяет  отлаживать  черно-белые программы при
         цветном  адаптере  и  дисплее. По умолчанию CodeView при загрузке
         
           
           
         проверяет  тип  адаптера  и  если  обнаруживает  MA (монохромный)
         адаптер, то работает в двух цветах, а если находит  CGA  (цветной
         графический адаптер), то работает в многоцветном режиме.
               В  связи  с  тем, что многие двухцветные дисплеи изображают
         цвета полутонами, использование /B опции улучшит наглядность тек-
         ста.
               

                                      - 15 -
         
         
               Пример.
                
               CV /B count count.txt
           
         запуск отладки программы в черно-белом режиме.
                
                         
               2.3.2. Спецификация стартовых команд
                
                Опция:
                
               /C<команды> : -C<команды>
                
               /C опция специфицирует одну или несколько  команд,  которые
         будут  выполнены  при старте (рекомендовано использование /C сов-
         местно с MAKE и BATCH файлами). Каждая команда должна быть  отде-
         лена от следующей ';'.
               Предупреждение.
               Если  одна  или  более  команд имеют аргументы, разделенные
         пробелами, то вся опция должна быть заключена в  двойные  кавычки
         '"'. Иначе CodeView будет интерпретировать этот аргумент как сле-
         дующую опцию командной строки.
               Если  одна или более команд имеют аргументы, содержащие '<'
         или '>', то вся опция должна быть  заключена  в  двойные  кавычки
         '"'. Иначе MS-DOS будет интерпретировать их как свои команды.
               Примеры.
               CV /CGmain count count.txt
               CV "/CS-;n16;G countwords;D buffer L100" count count.txt
               CV "/C




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