
- •Глава 4
- •Глава 5
- •Часть 1: использование турбо си.............................225
- •Часть 2. Команды меню.......................................280
- •Часть III. Дополнительные сведения о конфигурационных
- •Часть IV. Дополнительные возможности и команды
- •Глава 6
- •Глава 1: Использование библиотечных функций Турбо Си. Приво-
- •Глава 2: Библиотека Турбо Си. Описание всех библиотечных фу-
- •Глава 9, "Замечания для программистов, работающих на Турбо
- •Глава 4
- •Глава 5
- •Часть 1: использование турбо си.
- •Часть 2. Команды меню
- •Часть III. Дополнительные сведения о конфигурационных
- •Часть IV. Дополнительные возможности и команды
- •Глава 6
Часть 2. Команды меню
-----------------------------------------------------------------
Главное меню содержит основной набор действий для загрузки,
редактирования, компиляции, компоновки (редактирования связей),
отладки и выполнения программ Турбо Си. Меню включает восемь ре-
жимов: "File" (работа с файлами), "Edit" (редактор), "Run" (вы-
полнение), "Compile" (компиляция), "Project" (работа с проектом),
"Options" (опции), "Debug" (отладка) и "Break/Watch" (прерыва-
ние/контроль). Некоторые из этих опций используются обычно при
более сложных методах программировании и описаны более подробно в
главе 3.
Примечание. Упоминание в этой главе о "make" относится к
Project-Make, а не к автономной утилите MAKE. Project-Make также
является инструментом для построения программ (как и MAKE) и бо-
лее подробно описана в главе 3. Утилита MAKE описана в Приложении
D "Справочного руководства по Турбо Си".
- 281,282 -
File (меню работы с файлами)
-----------------------------------------------------------------
Развернутое вертикальное подменю режима File главного меню
позволяет: загрузить существующий, создать новый или записать
имеющийся файл. Когда вы загружаете файл, то он автоматически по-
мещается в редактор. После завершения работы с файлом вы можете
записать его в любом каталоге под любым именем. Кроме того, вы
можете перейти из этого подменю в другой каталог, временно выйти
в DOS или прекратить работу с Турбо Си.
Load (загрузка)
---------------
Загружает файл. Для выбора файла можно просмотреть список
имеющихся файлов с помощью метасимволов DOS (например, *.C) или
конкретно указать в рамке имя требуемого файла.
Замечание. Если имя файла или каталога указано не точно, то
на экране появится соответствующее сообщение. При попытке загру-
зить новый файл, когда в редакторе находится несохраненный файл,
появится сообщение, требующее указать, сохранять или не сохранять
предыдущий файл. В любом случае "горячие" клавиши будут заблоки-
рованы, пока вы не нажмете клавишу, указанную в сообщении, или не
измените содержимое рамки.
Pick (выбор)
------------
Позволяет выбрать файл из списка предыдущих восьми файлов,
загружавшихся в редактор. Выбранный файл помещается в редактор, а
курсор устанавливается в позицию, в которой он находился при вы-
ходе из режима редактирования этого файла в предыдущий раз. Если
из списка файлов вы выбрали последний пункт "--Load file--" (заг-
рузить файл), тогда на экране появится рамка, как будто выбран
пункт File/Load или нажата клавиша F3. Alt-F3 является оператив-
ным доступом к File/Pick. Интегрированная среда Турбо Си может
сохранять список имен файлов при выходе из системы, если вы соз-
дадите для нее специальный pick-файл (файл выбора).
- 283,284 -
Смотрите раздел об команде Options/Directories/Pick File
Name для получения информации о том, как создать файл выбора.
New (новый)
-----------
Указывает на необходимость создания нового файла. Вы сразу
входите в редактор и файл - по умолчанию - получает имя NONAME.C.
(Это имя можно изменить при записи файла.)
Save (сохранение)
-----------------
Записывает файл, находящийся в редакторе, на диск. Если имя
файла - NONAME.C, то редактор спросит, не хотите ли вы переимено-
вать его. При находождении в любом месте Турбо Си нажатие клавиши
F2 приведет к сохранению вашего файла.
Write to (запись в)
-------------------
Запрашивает имя файла, в который будет записано содержимое
редактора. Если такой файл уже существует, он переписывается.
Directory (каталог)
-------------------
Позволяет посмотреть любой каталог или требуемый набор фай-
лов. (Для вызова текущего каталога просто нажмите Ввод.) Изменить
маску поиска имени файла позволяет нажатие клавиши F4. Выбранный
файл помещается в редактор.
Change Dir (сменить каталог)
----------------------------
- 285,286 -
Отображает текущий каталог и позволяет назначить текущим
другой дисковод и каталог.
OS Shell (доступ к DOS)
-----------------------
Временный выход из Турбо Си в операционную систему. Для воз-
врата в Турбо Си наберите EXIT. Этим можно воспользоваться, если
нужно выполнить какую-либо команду операционной системы, не выхо-
дя из среды пакета Турбо Си.
Quit (выход)
------------
Прекращает работу с Турбо Си и возвращает вас в среду DOS.
"Горячая" клавиша для этой команды - Alt-X.
Edit (редактор)
-----------------------------------------------------------------
Команда Edit вызывает встроенный экранный редактор.
Для возвращения из редактора в главное меню нажмите F10 (или
Alt и первую букву нужной команды главного меню). Исходный текст
вашей программы останется на экране. Для перехода в редактор из
главного меню нажмите Esc или Е (из любого другого места системы
- Alt-E).
Run (меню выполнения)
-----------------------------------------------------------------
Команды меню Run запускают вашу программу на выполнение, а
также начинают и заканчивают отладочные сеансы. Для того, чтобы
использовать команды Run (за исключением Run/Run), вы должны ком-
пилировать и компоновать вашу программу с опцией Debug/Source
Debugging в положении On (т.е. включенной).
- 287,288 -
Run (выполнить)
---------------
Команда Run/Run запускает вашу программу на выполнение, ис-
пользуя аргументы, заданные в меню Options/Arguments. Если исход-
ный текст был модифицирован после последней компиляции, то коман-
да Run запускает также Project-Make для перекомпиляции и компо-
новки вашей программы. (Project-Make является инструментом для
построения программ, используемым в интегрированной среде; более
подробно Project-Make описана в главе 3.)
Если вы не хотите отлаживать вашу программу, компилируйте и
компонуйте ее с опцией Debug/Source Debugging в положении None
или Standalone. Если же вы откомпилируете вашу программу с этой
опцией в положении On, результирующий выполняемый модуль будет
содержать отладочную информацию, которая повлияет на выполнение
команды Run/Run следующим образом.
* Если вы не модифицировали вашу исходную программу со времени
последней компиляции:
- Команда Run/Run заставит вашу программу выполняться до
следующей точки прерывания или до конца, если точек прерывания не
установлено.
* Если вы модифицировали вашу исходную программу после предыдущей
компиляции:
- Если вы уже использовали к вашей программе опции пошагово-
го выполнения Run/Step Over (F8) или Run/Trace Info (F7), Run/Run
вызовет выдачу рамки с вопросом, хотите ли вы заново постороить
программу.
- Если вы нажмете Y (Да), Project-Make перекомпилирует и
перекомпонует вашу программу, а затем запустит ее на
выполнение с самого начала.
- Если вы нажмете N (Нет), ваша программа будет выпол-
няться до следующей точки прерывания или до конца, если
точек прерывания не установлено.
- 289,290 -
- Если вы еще не использовали опции пошагового выполнения,
Project-Make перекомпилирует вашу прогрмму и запустит ее на вы-
полнение с самого начала.
"Горячая" клавиша для команды Run/Run - Ctrl-F9.
Program Reset (сброс программы)
-------------------------------
Команда Run/Program Reset прерывает текущий сеанс отладки.
Она освобождает память, размещенную вашей программой, и закрывает
все открытые файлы. "Горячая" клавиша для Run/Program Reset -
Ctrl-F2.
Go to Cursor (выполнять до курсора)
-----------------------------------
Команда Run/Go to Cursor запускает программу с позиции, на
которой ее выполнение было приостановлено (выполняемой позиции),
и выполняет ее до строки, на которой в редакторе расположен кур-
сор. Если курсор находится на строке, не содержащей выполняемый
оператор, команда выдает рамку, содержащую предупреждение и пред-
ложение нажать клавишу Esc. Run/Go to Cursor может также начать
сеанс отладки.
Команда Run/Go to Cursor не устанавливает постоянную точку
прерывания, но позволяет программе останавливаться в постоянной
точке прерывания, если она расположена до строки, содержащей кур-
сор. Если это происходит, вы должны повторно запустить команду Go
to Cursor.
Используйте эту команду, если вы хотите отладить часть прог-
раммы. Если же вы хотите, чтобы ваша программа останавливалась на
определенном операторе каждый раз, установите точку прерывания в
этой строке.
"Горячая" клавиша для команды Run/Go to Cursor - F4.
- 291,292 -
Trace Into (трассировать внутрь)
--------------------------------
Команда Run/Trace Into запускает следующий оператор в теку-
щей функции. Если оператор не содержит вызова функции, доступной
отладчику, Trace Into переходит на следующий выполняемый опера-
тор.
Если оператор содержит вызов функции, доступной отладчику,
Trace Into останавливается в начале определения функции. Последу-
ющее задание команды Trace Into или Step Over запустит выполнение
операторов в описании функции. Когда отладчик покинет функцию,
возобновится выполнение оператора, который содержит вызов.
Функция доступна отладчику, если она описана в исходном фай-
ле, который был откомпилирован с включенными (On) опциями
O/C/C/OBJ Debug Information и Debug/Source Debugging, и отладчик
может найти исходный файл на диске.
Используйте Trace Into для перемещения отслеживаемой выпол-
няемой позиции внутрь функции, вызываемой из отлаживаемой в теку-
щий момент функции.
"Горячая" клавиша для команды Run/Trace Into - F7.
Step Over (пошаговое выполнение)
--------------------------------
Run/Step Over выполняет следующий оператор в текущей функ-
ции. Она не перемещает выполняемую позицию в вызываемые функции
нижнего уровня, даже если они доступны отладчику.
Используйте Step Over для пошагового (один оператор за раз)
выполнения отлаживаемой функции.
Ниже приведен пример, демонстрирующий разницу между
Run/Trace Into и Run/Step Over. Представлены первые двенадцать
строк программы, загруженной в редактор.
int findit(void) /* Строка 1 */
{
return(2);
- 293,294 -
}
void main(void) /* Строка 6 */
{
int i,j;
i = findit(); /* Строка 10 */
printf("%d\n",i); /* Строка 11 */
j = 0; ... /* Строка 12 */
}
findit является функцией, определенной пользователем в моду-
ле, который был откомпилирован с отладочной информацией. Предпо-
ложим, что в текущий момент выполняемой позицией является строка
10 вашей программы.
- Если вы выберете Run/Trace Into, выполняемая позиция пере-
местится в первую строку функции findit (строка 1 вашей програм-
мы), позволяя вам проверить и ее.
- Если вы выберете Run/Step Over, функция findit будет вы-
полнена, и i будет присвоено значение 2. Выполняемая позиция пе-
реместится на строку 11.
Если бы, однако, выполняемая позиция размещалась на строке
11 вашей программы, то разницы между выбором той или иной из этих
двух функций не было - обе они выполнили бы функцию printf и пе-
реместили позицию выполнения на строку 12. Это обусловлено тем,
что функция printf не содержит отладочной информации.
"Горячая" клавиша для команды Run/Step Over - F8.
- 295,296 -
Compile (меню компиляции)
-----------------------------------------------------------------
Режимы, перечисленные в этом меню, позволяют компилировать
программу в объектный (.OBJ) файл, создавать выполняемый (.EXE)
файл, производить компоновку, перестраивать все файлы, входящие в
проект, указывать первичный Си-файл, а также получать информацию
о последней компиляции или выполнении.
Compile to OBJ (компилировать в объектный файл)
-----------------------------------------------
Эта команда компилирует .C-файл в .OBJ-файл. Имя файла, ко-
торый будет получен в результате компиляции (например,
С:EXAMPLE.OBJ), постоянно отображается в ходе процесса компиля-
ции. Это имя образуется на основе одного из двух имен по следую-
щему простому алгоритму:
- в качестве имени файла принимается имя первичного исходно-
го файла; если оно не указано, то:
- принимается имя последнего файла, загруженного в окно
редактора.
Во время процесса компиляции на экране отображается окно, в
котором представляются результаты компиляции. По окончании про-
цесса компиляции нажмите любую клавишу для удаления этого окна.
Если были обнаружены ошибки, то вы окажетесь в окне сообщений на
первой ошибке (она отображается с повышенной яркостью). Эта ко-
манда и ее опции более подробно рассматриваются в главе 3.
"Горячая" клавиша для команды Compile to OBJ - Alt-F9.
Make EXE File (создать выполняемый файл)
----------------------------------------
Эта команда вызывает Project-Make для создания .EXE-файла. В
ходе процесса создания выполняемого файла постоянно отображается
имя файла, который получится в результате выполнения команды,
например, C:EXAMPLE.EXE. Имя .EXE-файла выбирается в соответствии
со следующим простым алгоритмом:
- 297,298 -
- имя файла-проекта (с расширением .PRJ), указанное в меню
Project/Project Name, или, если это имя не указано, то
принимается:
- имя первичного Си-файла или, если оно не указано, то при-
нимается:
- имя последнего файла, загруженного в окно редактора.
"Горячая" клавиша для этой команды - F9.
Link EXE (компоновать в .EXE-файл)
----------------------------------
Компонует текущие .OBJ и .LIB-файлы (как используемые по
умолчанию, так и заданные в текущем project-файле) без выполнения
make. В результате получается новый выполняемый файл с расширени-
ем .EXE.
Build All (перестроить)
-----------------------
Перестраивает все файлы вашего проекта, независимо от даты
создания. Эта команда похожа на команду Compile/Мake ЕХЕ File, за
исключением того, что в данном случае перекомпиляция делается для
всех файлов, независимо от их актуальности, тогда как Мake EXE
File перекомпилирует только те файлы, которые являются неактуаль-
ными. Build All сначала устанавливает даты создания всех файлов в
нуль, а затем выполняет make. (Таким образом, если вы прервете
выполнение команды Build All с помощью Ctrl-Break, то для возоб-
новления тех же действий вы можете задать уже и Make EXE File.)
Primary C File (первичный .C-файл)
----------------------------------
Эта команда полезна (но не обязательна), когда вы компилиру-
ете единичный .C-файл, включающий несколько файлов-заголовков
(.H-файлов). Если при компиляции обнаружена ошибка, то файл, со-
держащий ошибку (а это может быть файл как с расширением .С, так
- 299,300 -
и с расширением .Н), автоматически загружается в редактор, чтобы
вы могли исправить ошибку. (Следует отметить, что .Н-файл будет
автоматически загружен в редактор только в том случае, если для
опции /Options/Environment/Message Tracking вместо значения по
умолчанию поставлено значение "All Files" (все файлы). В против-
ном случае файл с расширением .Н в редактор автоматически не заг-
ружается.) После исправления ошибки первичный исходный файл пере-
компилируется после нажатия комбинации клавиш Alt-F9, даже если
он не загружен в редактор.
Get Info (получить информацию)
------------------------------
Команда Compile/Get Info обеспечивает выдачу на экран инфор-
мацию, содержащую:
- первичный файл;
- имя объектного файла, соответствующего текущему файлу;
- имя текущего исходного файла;
- размер текущего исходного файла (в байтах);
- код завершения программы;
- доступную память.
- 301,302 -
Project (меню проекта)
-----------------------------------------------------------------
Это меню предназначено для связи в единый проект нескольких
исходных и объектных файлов с целью создания законченных прог-
рамм.
Более подробная информация о проектах содержится в главе 3.
Project Name (имя проекта)
--------------------------
Выбирает файл проекта, содержащий имена файлов, которые дол-
жны компилироваться и/или компоноваться. Имя проекта присваивает-
ся файлам .ЕХЕ и .МАР при их создании. Файл проекта имеет, как
правило, расширение .PRJ.
Break Make On (прервать создание)
---------------------------------
Данный пункт позволяет указать условие, при котором должно
прерваться создание (make): если файл содержит предупреждения,
ошибки, фатальные ошибки, или же перед компоновкой файла.
Auto Dependencies (автозависимости)
-----------------------------------
Эта опция является переключателем. Если она установлена в On
(включена), Project-Make будет автоматически для каждого
.OBJ-файла в списке проекта проверять исходные .C-файлы.
Project-Make открывает .OBJ-файл и просматривает информацию
об исходных файлах, составляющих его. Эта информация всегда поме-
щается в .OBJ-файл как TC, так и TCC при компиляции. Затем дата и
время каждого исходного файла сопоставляются с датой и временем
создания .OBJ-файла. Если даты различаются, то производится пере-
компиляция.
- 303,304 -
Это называется проверкой автозависимостей.
Если же опция Auto Dependencies выключена (Off), то такая
проверка не производится.
Clear Project (очистить проект)
-------------------------------
Команда очищает имя проекта и удаляет сообщения из окна со-
общений.
Remove Messages (удалить сообщения)
-----------------------------------
Команда удаляет сообщения из окна сообщений.
Options (меню опций)
-----------------------------------------------------------------
Меню Options содержит установки, которые определяют, каким
образом работает интегрированная среда. Эти установки позволяют
управлять работой компилятора, компоновщика, изменять каталоги
включаемых и библиотечных файлов, устанавливать аргументы, пере-
даваемые программе во время ее выполнения, и т.д. Некоторые пунк-
ты этого меню содержат подменю, один является установкой и два
решают управленческие задачи.
- Compiler (содержит подменю)
- Linker (содержит подменю)
- Environment (содержит подменю)
- Directories (содержит подменю)
- Arguments (установка)
- Save Options (управление)
- Retrieve Options (управление)
- 305,306 -
Compiler (меню компилятора)
-----------------------------------------------------------------
Опции этого меню позволяют определить конкретную конфигура-
цию вашего компьютера, модель памяти, способ отладки, вид оптими-
зации получаемой программы, управление диагностическими сообщени-
ями и макроопределения. Элементы этого меню рассматриваются ниже,
ими являются:
- Model (модель памяти)
- Defines (макроопределения)
- Code Generation (генерация кода)
- Optimization (оптимизация)
- Source (работа с исходным текстом)
- Errors (ошибки)
- Names (имена)
Model (меню модели памяти)
--------------------------
В этом пункте можно выбрать одну из существующих в Турбо Си
моделей памяти. Модель памяти определяет принимаемый по умолчанию
способ адресации памяти. Опциями данного пункта являются: Tiny
(крохотная), Small (малая), Compact (компактная), Medium (сред-
няя), Large (большая) и Huge (максимальная). По умолчанию выбира-
ется малая модель памяти, на что указывает слово Small, стоящее
справа от наименования пункта Model. Более подробно модели памяти
описаны в главе 12.
Defines (макроопределения)
--------------------------
Выбрав этот пункт, вы можете вписать в появившуюся на экране
рамку макроопределения, передаваемые препроцессору. Несколько
макроопределений могут быть разделены точкой с запятой (;). Зна-
чение (при необходимости) присваивается знаком равенства (=).
Пробелы в начале и конце строки удаляются; пробелы, находя-
щиеся в середине макроопределения, оставляются. Если в макроопре-
деление необходимо вставить точку с запятой, перед ней следует
поставить слеш (\).
Приведенный ниже пример означает следующее: определяется имя
- 307,308 -
BETA_TEST, переменной ONE присваивается значение 1; переменной
COMPILER присваивается значение TURBOC.
BETA_TEST; ONE = 1; COMPILER = TURBOC
Code Generation (меню генерации кода)
-------------------------------------
Параметры этого режима определяют различные варианты генера-
ции объектного кода.
Calling Convention (соглашения по вызову)
-----------------------------------------
Указывает компилятору генерировать последовательность вызова
функции, соответствующую либо Си, либо Паскалю (более быструю
последовательность). Разница между ними заключается в способе ра-
боты со стеком, числе и порядке передаваемых параметров, а также
в обработке внешних идентификаторов (по-разному обрабатываются
различные регистры и символы нижнего подчеркивания внешних иден-
тификаторов).
Если вы не являетесь специалистом и не читали главу 12, пос-
вященную более сложным вопросам программирования, то не изменяйте
значение данного пункта, установленное по умолчанию.
Instuction Set (установка набора команд)
----------------------------------------
Установка набора команд позволяет настроить компилятор на
команды соответствующего процессора; переключает с набора команд
процессора типа 8088/8086 на набор команд процессоров 80x86. По
умолчанию генерируется объектный код для процессоров типа 80x86.
Турбо Си может генерировать расширенный набор команд процессора
80x86. Вы можете использовать также эту опцию при генерации прог-
рамм для процессора 80x86, выполняемых в реальном масштабе време-
ни, таком, например, как реализованный на компьютере IBM PC AT
под управлением MS-DOS версии 3.x.
Floating Point (плавающая точка)
--------------------------------
- 309,310 -
Этот переключатель допускает три опции.
- 8087/80287, которая непосредственно генерирует машинные
команды сопроцессора (обработки операций с плавающей точкой).
- Emulation (эмуляция), которая определяет, имеете ли вы в
своей конфигурации компьютера сопроцессор обработки операций с
плавающей точкой типа 8087/80287, и использует его, если он есть;
в противном случае этот процессор эмулируется, но полученная
программа будет выполняться более медленно.
- None, которая предполагает, что вы не используете в прог-
рамме операции с плавающей точкой. (Если выбрана опция None, а вы
используете вычисления с плавающей точкой в вашей программе, то
вы получите ошибки при компоновке).
Default Char Type (тип символа, используемый по умолчанию)
----------------------------------------------------------
Переключает между Signed (со знаком) и Unsigned (без знака)
тип символа, используемый по умолчанию. Если вы выбираете Signed,
то компилятор будет обрабатывать все определения типа char, как
если бы они были типа signed char; и наоборот, при выборе
Unsigned, компилятор обрабатывает все определения типа char так,
как если бы они имели тип unsigned char. Значением по умолчанию
является Signed.
Alignment (выравнивание)
------------------------
Позволяет вам переключаться с выравнивания объектного фай-
ла на границу слова на выравнивание на границу байта. При вы-
равнивании на границу слова несимвольные данные выравниваются
по четным адресам. При выравнивании на границу байта данные мо-
гут выравниваться как по нечетным, так и по четным адресам, в
зависимости от следующего доступного адреса. Выравнивание на
границу слова увеличивает скорость выборки и записи в память
данных процессорами типа 8086 и 80286.
Generated Underbars (генерация символа подчеркивания)
- 311,312 -
-----------------------------------------------------
По умолчанию эта опция всегда включена (установлена в On).
Если вы не являетесь специалистом и не читали главу 12, пос-
вященную более сложным вопросам программирования, то не изменяйте
значение этой опции.
Merge Dublicate String (слияние одинаковых строк)
-------------------------------------------------
Слияние одинаковых строк оптимизирует объектный файл путем
объединения строк, в случае когда одна строка совпадает с другой.
Это приводит к более компактным программам. По умолчанию эта оп-
ция выключена (Off).
Standart Stack Frame (стандартная запись активации)
---------------------------------------------------
Генерирует стандартные записи активации (стандартные коды
вызова и выхода из функции). Целесообразно использовать при от-
ладке с помощью символного отладчика для упрощения процесса прос-
мотра хранящихся в стеке вызванных подпрограмм. По умолчанию
включена (On).
Если исходный файл компилируется при выключенной (Off) опции
Standart Stack Frame, все функции, не использующие локальные пе-
ременные и не имеющие параметры, компилируются с сокращенным вхо-
дом и кодом возврата. Это делает код программы короче и быстрее,
однако делает функции недоступными для Debug/Call Stack. Поэтому,
если вы хотите использовать отладчик, компилируйте ваш исходный
файл при включенной опции Standart Stack Frame.
Test Stack Overflow (проверка переполнения стека)
-------------------------------------------------
Генерирует код для проверки переполнения стека во время вы-
полнения программы. Хотя это отражается на занимаемой программой
памяти и времени ее выполнения, но на практике пренебрегать воз-
можностью компилятора генерировать такие средства не стоит: пере-
полнение стека очень сложная для выявления ошибка. По умолчанию
- 313,314 -
эта опция выключена (Off).
Line Numbers (нумерация строк)
------------------------------
Включает режим нумерации строк объектного файла (для даль-
нейшего использования символьным отладчиком). Это увеличивает
размеры обьектного файла и файла карты, но не влияет на размер
или скорость выполнения программы. (Размер выполняемой программы
увеличится, если переключатель Debug/Source Debugging установлен
в On, и вы компонуете объектные файлы, созданные с включенной оп-
цией O/C/C/Line Numbers. Размер файла увеличивается из-за добав-
ления отладочной информации.) По умолчанию выключена (Off).
Так как компилятор может группировать общий код из различных
участков исходного текста во время оптимизации переходов или пе-
реупорядочивать строки (что затрудняет прослеживание номеров
строк), мы рекомендуем отключить установку Options/Compiler/
Optimization/Jump Optimization при использовании режима нумерации
строк объектного файла.
OBJ Debug Information (тип отладочной информации)
-------------------------------------------------
Управляет типом отладочной информации, включаемой в объект-
ные файлы. По умолчанию установлена в On (включена), что позволя-
ет применять для отладки как встроенный интегрированный, так и
автономный отладчик Турбо.
Optimization (меню оптимизации)
-------------------------------
Опции данного меню позволяют вам оптимизировать код вашей
программы тем или иным образом.
Optimize For (оптимизировать по...)
------------------------------------
Изменяет стратегию генерации обьектного кода Турбо Си. Обыч-
но компилятор работает в режиме "Optimize for...Size" (оптимиза-
- 315,316 -
ция по размеру), создавая возможно меньшую по объему последова-
тельность кодов. При переключении этого режима работы на
"Optimize for...Speed" (оптимизация по скорости выполнения прог-
раммы), компилятор генерирует наиболее быструю (из возможных)
последовательность кодов объектного файла для данной задачи.
User Register Variables (использование регистровых переменных)
--------------------------------------------------------------
Запрещает или разрешает использовать регистровые переменные
в программе на Турбо Си. При включении этой опции (On), регистро-
вые переменные используются автоматически. При выключении этой
опции (Off), регистровые переменные не используются компилятором,
даже если вы указали ключевое слово register при их описании (см.
Приложение C "Справочного руководства" для выяснения деталей).
Вообще лучше сохранять эту опцию в положении On, если вы не
создаете интерфейс с уже существующими программами на ассемблере,
которые не поддерживают работу с регистровыми переменными.
Register Optimization (регистровая оптимизация)
-----------------------------------------------
Регистровая оптимизация запрещает избыточные загрузочные
операции, запоминая содержимое регистров и вторично используя его
так часто, как это возможно.
Замечание. Вы должны соблюдать осторожность при использова-
нии этой опции, потому что компилятор не может определить, был ли
регистр модифицирован косвенно, посредством указателя. Обратитесь
к Приложению A "Справочного руководства" для более подробного ра-
зъяснения этого ограничения.
Jump Optimization (оптимизация по переходам)
--------------------------------------------
Оптимизация по переходам уменьшает размер программы за счет
удаления лишних передач управления, реорганизации циклов и опера-
торов switch. Реорганизации циклов могут ускорить действие сжатых
внутренних циклов.
- 317,318 -
Замечание. Когда этот переключатель установлен в On (вклю-
чен), пошаговая отладка и трассирование могут быть запутаны, т.к.
несколько строк исходного текста могут соответствовать одной пос-
ледовательности кода. Поэтому при отладке лучше устанавливать
этот переключатель в Off (выключен).
Source (меню работы с исходным текстом)
-----------------------------------------------------------------
Пункты этого меню определяют действия компилятора с исходным
текстом программы на начальных стадиях компиляции.
Identifier Length (длина идентификатора)
----------------------------------------
Устанавливает число значащих символов в идентификаторе. Все
идентификаторы трактуются как различные только в том случае, если
их первые N литер различны. Это распространяется на переменные,
макроимена препроцессора и имена элементов структуры. Длина иден-
тификатора может быть указана любой величины от 1 до 32 символов;
по умолчанию длина идентификатора составляет 32 значащих символа.
Nested Comments (вложенные комментарии)
---------------------------------------
Позволяет использовать вложенные комментарии в исходных фай-
лах Турбо Си. Вложенные комментарии обычно не допускаются в дру-
- 319,320 -
гих трансляторах Си, и поэтому программы, использующие их, не пе-
реносимы.
ANSI Keywords Only (ключевые слова только согласно ANSI)
--------------------------------------------------------
Переключите на On (включена), если хотите, чтобы компилятор
распознавал только ключевые слова, предусмотренные стандартом
ANSI, а к дополнительным ключевым словам Турбо Си относился как к
обычным идентификаторам. Игнорируются (при включенном режиме)
следующие ключевые слова Турбо Си: near, far, huge, asm, cdecl,
pascal, interrupt, _es, _ds, _cs, _ss, а также регистровые псев-
допеременные (_AX, _BX, ...). Эта опция определяет также иденти-
фикатор _STDC_ в ходе компиляции.
Errors (меню ошибок)
-----------------------------------------------------------------
С помощью этого меню вы можете указать реакцию компилятора
Турбо Си на различные диагностические сообщения.
Errors: Stop After (ошибки: остановиться после ...)
--------------------------------------------------
Вызывает прекращение компиляции после того, как выявлено
указанное число ошибок. По умолчанию установлено 25, однако вы
можете ввести любое число от 0 до 255. (Ввод 0 вызывает компиля-
цию без ограничений этой опции.)
Warnings: Stop After (предупреждения: остановиться после...)
------------------------------------------------------------
Выбор этой опции вызывает прекращение компиляции после 100
предупреждений. Однако, 100 - это только число по умолчанию; раз-
решенные значения находится в диапазоне от 0 до 255, где введение
- 321,322 -
0 вызывает компиляцию, продолжающуюся без ограничений или пока не
будет исчерпан лимит ошибок.
Display Warnings (вывод предупреждений на экран)
------------------------------------------------
По умолчанию эта опция включена (On), что означает, что вы-
водятся любые из следующих типов предупреждений, если они выбра-
ны:
- Portability Warnings (предупреждения о переносимости)
- ANSI Violations (нарушения стандарта ANSI)
- Common Errors (общие ошибки)
- Less Common Errors (менее общие ошибки)
Когда этот пункт принимает значение Off, ни одно из предуп-
реждений не будет отображаться на экране. Более подробно все пре-
дупреждения обсуждаются в Приложениях B и C "Справочного руковод-
ства".
Names (имена)
-----------------------------------------------------------------
С помощью этого пункта вы можете изменять заданные по умол-
чанию имена сегментов, групп и классов для Code, Data и BSS сек-
ций.
Когда вы выбираете один из этих пунктов, звездочка (*) в
следующем появляющемся меню указывает компилятору использовать
имена по умолчанию.
Не изменяйте эту опцию, если вы не являетесь специалистом и
не читали главу 12, посвященную более сложным приемам программи-
рования.
- 323,324 -
Linker (меню компоновщика)
-----------------------------------------------------------------
Пункты в этом меню связаны с установкой опций для компонов-
щика. Обратитесь к Приложению D "Справочного руководства" для по-
лучения большей информации об установках компоновщика.
Map File (файл карты)
-----------------------------------------------------------------
Выбирает тип генерируемого файла карты. Если установка режи-
ма Map File отлична от Off (выключен), то файл карты помещается в
выходной каталог, определенный в Options/Directiries/Output
Directiry. По умолчанию файл карты не создается, так как режим
выключен (Off). Кроме этого, вы можете задать тип генерируемого
компоновщиком файла карты, указав в этом меню: "Segments" (для
сегментов памяти), "Publics" (для глобальных переменных) или
"Detailed" (подробный).
Initialize Segments (инициализация сегментов)
-----------------------------------------------------------------
Предписывает компоновщику инициализировать неинициализиро-
ванные сегменты памяти. (Обычно в этом нет нужды, кроме того, это
увеличивает без необходимости размер .EXE-файла).
Default Libraries (библиотеки по умолчанию)
-----------------------------------------------------------------
Когда вы производите компоновку с модулями, которые были
созданы компилятором, отличным от Турбо Си, знайте: этот компиля-
тор мог разместить в объектном файле список своих библиотек, к
которым он обращался при компиляции.
Если эта опция включена (On), то компоновщик попытается
отыскать любую не определенную функцию в этих библиотеках, наряду
с поиском в библиотеках, используемых по умолчанию в Турбо Си.
Если эта опция выключена (Off), то поиск будет проводиться только
в библиотеках, используемых по умолчанию в Турбо Си.
- 325,326 -
Graphics Libraries (графические библиотеки)
-----------------------------------------------------------------
Включает (On) и выключает (Off) автоматический поиск графи-
ческой библиотеки BGI. Когда этот переключатель включен (On), вы
можете построить и запустить графическую программу, состоящую из
единичного файла, без использования файла-проекта. Выключение
(Off) повышает скорость компоновки, поскольку компоновщику в этом
случае не нужно компоновать файл графической библиотеки BGI. По
умолчанию включен (On).
Замечание. Вы можете выключить автоматический поиск, но ис-
пользовать графическую библиотеку путем включения ее в файл-про-
ект.
Warn Dublicate Symbols (предупреждение о дублирующихся
идентификаторах)
-----------------------------------------------------------------
Включает (On) и выключает (Off) предупреждения компоновщика
о совпадении имен идентификаторов в обьектных и библиотечных фай-
лах. По умолчанию опция выключена (Off).
Stack Warning (стековое предупреждение)
-----------------------------------------------------------------
Блокирует генерацию компоновщиком сообщения "No stack" (нет
стека). (Обычно это сообщение генерируется для программ крохотной
(tiny) модели памяти.)
Case-sensitive Link (компоновка с учетом регистра)
-----------------------------------------------------------------
В зависимости от установки в состояние On (включена) или Off
(выключена), символы нижнего и верхнего регистра во время компо-
новки различаются или не различаются. Обычно эта опция включена,
т.к. Си - сам по себе язык, учитывающий различие регистров.
- 327,328 -
Environment (среда)
-----------------------------------------------------------------
Элементы этого меню позволяют вам сохранять ваш исходный
файл, находящийся в редакторе, и приспособить условия работы Тур-
бо Си к нуждам вашего программирования.
Message Tracking (отслеживать сообщения)
-----------------------------------------------------------------
Турбо Си отслеживает синтаксические ошибки в редакторе в со-
ответствии с тем, как вы их выбираете в окне сообщений. Данный
трехпозиционный переключатель указывает Турбо Си, в каких файлах
необходимо отслеживать сообещения.
По умолчанию принимается значение "Track...Current file"
(отслеживать в текущем файле). При этом в редакторе будет отсле-
живаться только текущий (находившийся в нем) файл. Режим
"Track...All files" обеспечивает загрузку и отслеживание сообще-
ний во всех файлах. Режим отслеживания может быть выключен зада-
нием значения Off.
Keep messages (сохранить сообщения)
-----------------------------------------------------------------
Когда эта опция включена (On), Турбо Си сохраняет текущую
информацию об ошибках в окне сообщений, добавляя любые сообщения
в это окно в ходе последующих компиляций. Когда же файл скомпили-
рован, любые сообщения, касающиеся этого файла, перемещаются в
окне сообщений и новые сообщения добавляются к старым. Когда же
опция выключена (Off), сообщения автоматически удаляются из окна
(т.е. окно полностью очищается) перед компиляцией другого файла
или выполнением Make.
Config Auto Save (автоматическое сохранение конфигурации)
-----------------------------------------------------------------
Обычно Турбо Си сохраняет текущую конфигурацию (записывает
на диск) только когда вы задаете команду Options/Save Options.
Если же вы включите (On) данную опцию, Турбо Си будет автомати-
- 329,330 -
чески сохранять конфигурацию каждый раз, когда вы задаете команды
Run/Run или File/OS Shell или выходите из интегрированной среды,
если текущая конфигурация отличается от сохраненной перед этим.
При автоматической записи файла конфигурации Турбо Си выби-
рает его имя. Это либо имя файла, в который записывалась конфигу-
рация в предыдущий раз, либо файл TCCONFIG.TC (в текущем катало-
ге), если вы еще не загружали, не восстанавливали и не сохраняли
файл конфигурации.
Edit Auto Save (автоматическая запись редактируемого файла)
-----------------------------------------------------------------
Когда эта опция включена (On), Турбо Си осуществляет автома-
тическую запись редактируемого файла при использовании команд
Run/Run или File/OS Shell, если файл был модифицирован со времени
последнего сохранения.
Backup Files (резервирование файлов)
-----------------------------------------------------------------
По умолчанию Турбо Си автоматически создает архивную копию
вашего исходного файла, когда вы используете команду File/Save.
Резервная копия имеет расширение .BAK. Вы можете включать (On)
или выключать (Off) данную опцию.
Tab Size (размер табуляции)
-----------------------------------------------------------------
Когда в редакторе включен (On) режим табуляции, и вы нажима-
ете клавишу Tab, редактор вставляет в файл символ табуляции и пе-
ремещает курсор в соответствии с размером табуляции. Размер табу-
ляции задается именно этим пунктом меню, и может иметь значение
от 2 до 16. По умолчанию принято 8.
Для изменения размера всех табуляций в текущем файле просто
измените Tab Size на значение, которое вам необходимо, и редактор
сразу изменит размер всех табуляций в файле на выбранный вами. Вы
можете сохранить выбранный вами размер табуляций в файле конфигу-
рации (заданием команды Save Options в меню опций).
- 331,332 -
Zoomed windows (увеличенные окна)
-----------------------------------------------------------------
Если в интегрированной среде Турбо Си экран установлен таким
образом, что одновременно отображаются окно редактора и окно со-
общений, то при включении данной опции (On) они будут занимать
весь экран каждое, при этом отображаться будет активное.
Для перехода из одного окна в другое используйте клавишу F6.
Для возврата в прежний режим одновременного отображения обо-
их окон установите данную опцию в положение Off (выключена).
Screen Size (размер экрана)
-----------------------------------------------------------------
При выборе данного пункта появляется еще одно меню, которое
позволяет вам указывать режим отображения текста в интегрирован-
ной среде: 25 строк или 43/50 строк. Выбор одного из этих двух
режимов зависит от используемого видео адаптера.
- 25 строк. Это стантартный дисплей персонального компьюте-
ра: 25 строк и 80 столбцов. Этот режим всегда доступен. Для мо-
нохромного (MDA) и цветного графического (CGA) адаптеров этот ре-
жим является единственно возможным.
- 43/50 строк. Этот режим доступен, если вы используете
адаптеры EGA или VGA. При этом первый из них использует 43 строки
и 80 колонок, а второй - 50 строк и 80 колонок.
Directories (каталоги)
-----------------------------------------------------------------
Пункты этого меню позволяют указать Турбо Си, где ему следу-
ет искать файлы для компиляции, компоновки, где размещать выход-
ные файлы и где искать файлы конфигурации, выбора (pick) и помощи
(help).
Include Directories (каталоги включаемых файлов)
- 333,334 -
-----------------------------------------------------------------
Описывает каталоги, которые содержат ваши стандартные вклю-
чаемые файлы. Стандартные включаемые файлы - это файлы, которые в
операторе #include заключаются в угловые скобки (<>). (Например:
#include <myfile.h>.) Если указывается список каталогов, то они
разделяется точкой с запятой (;). Для получения более подробной
информации об этой опции смотри главу 3.
Library Directories (каталоги библиотечных файлов)
-----------------------------------------------------------------
Описывает каталог, который содержит инициализирующие обьект-
ные файлы (CO?.OBJ) и файлы библиотеки времени выполнения
(.LIB-файлы). Можно указывать список файлов длиной не более 127
символов (включая пробелы).
Руководствуйтесь следующими правилами:
- при задании нескольких каталогов разделяйте их точкой с
запятой (;);
- пробелы до и после точки с запятой допустимы, но не обяза-
тельны;
- допустимы как относительные, так и абсолютные составные
имена, включая имена каталогов на носителях, не являющихся
текущими.
Например:
C:\TURBOC\LIB; C:\TURBOC\MYLIB; A:NEWTURBO\MATHLIBS; A:..\VIDLIBS
Output Directory (выходной каталог)
-----------------------------------------------------------------
Ваши .OBJ, .EXE и .MAP файлы сохраняются в определяемом
здесь каталоге; Турбо Си просматривает этот каталог при выполне-
нии команд Run и Make. При его отсутствии файлы сохраняются в те-
кущем каталоге.
Turbo С Directory (каталог Турбо Си)
-----------------------------------------------------------------
- 335,336 -
Этот каталог используется системой Турбо Си для нахождения
файла конфигурации (.ТС) и файла справочной информации
(TCHELP.TCH). Для того, чтобы Турбо Си нашел ваш файл конфигура-
ции, используемый по умолчанию, - TCCONFIG.TC, при первой загруз-
ке, если он не находится в текущем каталоге, вы должны установить
к нему маршрут доступа с помощью TCINST - внешней программы наст-
ройки системы.
Pick File Name (имя файла выбора)
-----------------------------------------------------------------
Этот пункт позволяет определить имя pick-файла. Задание
здесь имени позволяет Турбо Си загружать этот файл (если он су-
ществует) и указывает Турбо Си, куда записывать соответствующую
информацию. Если вы изменяете имя pick-файла, то Турбо Си сначала
сохраняет текущий pick-файл, а затем загружает новый.
Если здесь имя не задано, то Турбо Си записывает pick-файл
только если установка Options/Directories/Current Pick File со-
держит имя файла.
Для создания pick-файла вы должны определить его имя. Для
этого вы должны ввести имя в рамку, которая появляется после вы-
бора пункта Options/Directories/Current Pick File. После того,
как вы определите pick-файл, Турбо Си будет сохранять его каждый
раз при выходе из системы. Это имя pick-файла будет сохранено в
вашем файле конфигурации при выполнении команды Options/Save
Options.
Current Pick File (текущий файл выбора)
-----------------------------------------------------------------
Этот пункт меню показывает имя и расположение pick-файла,
если он существует. Информацию этого пункта нельзя изменять. Те-
кущий pick-файл показывает имя файла выбора, используемого по
умолчанию или задаваемого вами с помощью команды Pick File Name.
Если вы изменяете имя pick-файла или выходите из интегрированной
среды, Турбо Си сохраняет текущую информацию в указанном здесь
файле выбора.
- 337,338 -
Arguments (аргументы)
-----------------------------------------------------------------
Позволяет вам задавать аргументы командной строки для выпол-
няемой программы, как если бы они были набраны в командной строке
DOS (переназначение не поддерживается). Здесь необходимо задавать
только одни аргументы, без имени программы.
Save Options (сохранить опции)
-----------------------------------------------------------------
Сохраняет все выбранные вами опции компилятора, компоновщи-
ка, среды, отладчика и проектировщика в файле конфигурации (по
умолчанию им является файл TCCONFIG.TC). При загрузке Турбо Си
ищет в текущем каталоге TCCONFIG.TC; при его отсутствии там, Тур-
бо Си просматривает каталог Турбо Си.
Retrieve Options (восстановить опции)
-----------------------------------------------------------------
Загружает файл конфигурации, ранее сохраненный командой
Options/Save Options.
Debug (меню отладчика)
-----------------------------------------------------------------
Команды этого меню управляют установками интегрированного
отладчика, за исключением точек останова и контрольных выражений
(они указаны в меню Break/Watch).
- 339,340 -
╔───────────────────────────────────────────────────────────────╗
║ Files Edit Run Compile Project Options ║Debug║ Break/watch║
║───────────────────────── Edit ──────────────────────────────║
└─────┘ ║
║ Line 1 Col 1 Insert Indent Tab ║Evaluate Ctrl-F4 ║║
║ ║───────────────────────║║
║ ║Call stack Ctrl-F3 ║║
║ ║Find function ║║
║ ║Refresh display ║║
║ ║Display swapping Smart║║
║ ║Source debugging On ║║
║ └───────────────────────┘║
║ ║
║ ║
═══════════════════════════ Watch ══════════════════════════════
║ ║
║ F1-Help F5-Zoom F6-Switch F7-Trace F8-Step F9-Make F10-Menu ║
└───────────────────────────────────────────────────────────────┘
Рис 5.22. Меню отладчика (Debug)
Evaluate (Оценка)
-----------------------------------------------------------------
"Оценка" позволяет оценивать переменные или выражения, отоб-
ражать их значения и, при необходимости, модифицировать их значе-
ния.
Команда открывает расположенное вверху окно, содержащее три
поля: поле оценки (Evaluate), результирующее (Result) поле и поле
нового значения (New Value). При этом в поле оценки переносится
текущее выражение, представляющее собой слово, на котором разме-
щается в данное время курсор в окне редактирования. Вы можете
оценить текущее выражение, нажав Ввод, отредактировать его или
оставить прежним. Вы можете также расширить текущее выражение пу-
тем копирования дополнительных символов из окна редактирования с
помощью ключа "Right arrow" (стрелка вправо).
Вы можете оценить любое допустимое выражение Си, если оно не
содержит:
- функциональных обращений;
- обозначений или макросов, определяемых с помощью #define
или typedef;
- локальных либо статических переменных, не находящихся в
области действия используемой функции до тех пор, пока они не бу-
дут полностью квалифицированы.
Если отладчик может оценить выражение, то он отображает его
значение в результирующем поле.
Если выражение относится к переменной, либо простому элемен-
ту данных, то вы можете переместить курсор вниз в поле нового
значения и ввести выражение как новое значение.
Если вам необходимо модифицировать значение выражения, но вы
не хотите делать этого, нажмите клавишу Esc для того, чтобы зак-
рыть окно. Если вы изменили содержание поля нового значения, но
не нажали клавиши Ввод, отладчик проигнорирует сделанные вами из-
менения при выходе из окна.
Debug/Evaluate отобразит каждый тип значения в соответствую-
щем формате. Например, он отобразит int как целое по основанию 10
и массив как указатель по основанию 16. Для того, чтобы получить
различные форматы отображения, дополните выражение командой, сле-
дующей за одним из форматных спецификаторов, приведенных в Табли-
це 5.5.
Используйте повторное выражение для отображения значений
последовательных элементов данных. Например: для массива целых,
поименованного xarray,
xarray[0],5 отображается 5 последовательных целых чисел
в десятичной системе счисления
xarray[0],5x отображается 5 последовательных целых чисел
в шестнадцатиричной форме.
Выражение, использованное в повторном счете, должно предс-
тавлять собой один элемент данных. Отладчик рассматривает элемент
данных как первый элемент массива, если он не является указате-
лем, либо как указатель массива, если он является таковым.
Таблица 5.5. Спецификаторы формата, распознаваемые
в выражениях отладчика.
-----------------------------------------------------------------
Символ Функция
-----------------------------------------------------------------
C Character (символ). Показывает специальные символы ото-
бражения для управляющих символов (ASCII от 0 до 31); по
умолчанию подобные символы показываются с использованием
соответствующих управляющих последовательностей Си (\n,
\t, и т.д.). Действует на символы и строки.
S String (строка). Показывает управляющие символы (ASCII
от 0 до 31) в виде значение ASCII, используя соответс-
твующие управляющие последовательности Си. В связи с
тем, что это формат отображения текущего символа и стро-
ки, то спецификатор S может быть использован только со
спецификатором M.
D Decimal (десятичный). Все целочисленные значения отобра-
жаются в десятичной системе счисления. Действует как на
выражения с простыми целыми числами, так и на массивы и
структуры, содержащие целые числа.
H или X Hexadecimal (шестнадцатиричный). Все целочисленные зна-
чения отображаются в виде шестнадцатиричных с прибавле-
нием впереди 0x. Действует на выражения с простыми целы-
ми числами, а также на массивы и структуры, содержащие
целые числа.
F<n> Floating point (плавающая точка). n представляет собой
целое число от 2 до 18, определяющее номера значащих
цифр для отображения. Текущее число равно 7. Действует
только на значения с плавающей точкой.
M Memory dump (дамп памяти). Отображает дамп памяти,начи-
нающийся с адреса отмеченного выражения. Выражение долж-
но представлять собой конструкцию, которая с левой сто-
роны должна быть приемлема для оператора присваивания.
Другими словами, конструкция указывает на адрес памяти.
В противном случае спецификатор M игнорируется. По умол-
- 345,346 -
чанию, каждый байт переменной показывается в виде двух
шестнадцатиричных цифр. В случае использования вместе с
M спецификатора D, байты будут отображаться в виде деся-
тичных цифр. При использовании вместе с M спецификатора
H или X, байты будут отображаться в виде шестнадцатирич-
ных цифр. Использование спецификаторов C и S приведет к
тому, что переменная будет отображаться в виде строки (с
или без специальных символов). Текущее число байт соот-
ветствует размеру переменной, однако для определения
точного числа байт может быть использован повторный
счет.
P Pointer (указатель). Отображает указатели в формате seg:
ofs с дополнительной информацией об указанных адресах
скорее, чем текущий формат seg:ofs, ориентированный на
аппаратные средства. Точнее, он сообщает вам об области
памяти, в которой находится сегмент, и имя переменной по
смещенному адресу, если он присвоен. Области памяти мо-
гут быть следующими:
--------------------------------------------------------
Область памяти Оценочное сообщение
--------------------------------------------------------
0000:0000-0000:03FF Таблица вектора прерывания
0000:0400-0000:04FF Область данных BIOS
0000:0500 - Турбо Си MSDOS/TSR
Турбо Си - Пользовате- Турбо Си
льская программа PSP
Пользовательская Пользовательский процесс PSP
программа PSP
Пользовательская про- Имя статической переменной поль-
грамма PSP - верх ОЗУ зователя, если ее адрес попадает
в память, где находятся перемен-
ные, в противном случае, ничего
- 347,348 -
A000:0000-AFFF:FFFF EGA (усовершенствованный графиче-
ский адаптер) Video RAM (видеопа-
мять)
B000:0000-B7FF:FFFF Монохромный дисплей ОЗУ (RAM)
B800:0000-BFFF:FFFF Цветный дисплей ОЗУ (RAM)
C000:0000-EFFF:FFFF Страницы EMS/Адаптер BIOS ПЗУ
(ROM)
F000:0000-EFFF:FFFF BIOS ROM (базовая система ввода-
вывода ПЗУ)
--------------------------------------------------------
R Structure/Union (структура/объединение). Отображает име-
на полей, а также значений типа {x:1, y:10, z:5}. Дейс-
твует только на структуры и объединения
-----------------------------------------------------------------
"Горячим ключом" для Debug/Evaluate является Ctrl-F4.
Поиск функции (Find Function)
-----------------------------------------------------------------
Поиск функции отображает определенные функции в окне редак-
тирования. Команда может найти любую функцию в вашей программе,
которая компилировалась с помощью Debug/Source Debugging и O/C/C/
OBJ Debug Information в случае, если их опции включены (в положе-
нии "ON"), и чьи исходные файлы доступны. Если функции нет в
отображаемом в настоящее время файле, команда автоматически заг-
ружает надлежащий файл.
Для поиска функции вы должны находится в сеансе отладки.
Стек вызова (Call stack)
-----------------------------------------------------------------
Команда стек вызова отображает в верхней части экрана окно,
содержащее стек вызова. Стек вызова показывает последовательность
функций, вызываемых вашей программой с тем, чтобы достичь работа-
ющей в настоящее время функции. Функция main находится в нижней
- 349,350 -
части стека; работающая в настоящее время функция находится в
верхней части стека.
Каждое обращение к стеку вызова отображает имя вызываемой
функции и значения параметров, передаваемых ему.
Выход в верхнюю часть стека выделяется подсветкой. Для отоб-
ражения текущей строки любой другой функции вызова стека необхо-
димо переместить подсветку на имя этой функции и нажать клавишу
Ввод. Курсор будет перемещен на строку, содержащую обращение к
функции, следующей выше в стеке. Например, если стек вызова будет
выглядеть следующим образом:
func 2 ()
func 1 ()
main ()
(таким образом main вызывает func 1, а func 1 вызывает func 2), а
вам хотелось бы увидеть исполняемую в настоящее время строку func
1, вы должны переместить подсветку на func 1 в стеке вызова и на-
жать клавишу Ввод. Код для func 1 должен появиться в окне редак-
тирования, а курсор переместиться на обращение к func 2.
Для возврата текущей строки работающей в настоящее время
функции (т.е. находящейся в положении исполнения) подсветите са-
мую верхнюю функцию в стеке вызова и нажмите клавишу Ввод.
Некоторые функции могут не запускаться из стека вызова, если
ваша программа компилировалась при включенной опции
O/C/C/Standart Stack Frame. Для получения дополнительной информа-
ции смотрите описание O/C/C/Standart Stack Frame.
"Горячим ключом" для O/C/C/Standart Stack Frame является
Ctrl-F3.
Отладка исходных текстов (Source Debugging)
-----------------------------------------------------------------
Опция Debug/Source Debugging имеет три режима установки фла-
га: Включено, Автономно и Выключено.
Программы, компонуемые при положении флага "Включено", могут
- 351,352 -
отлаживаться как во встроенном в ТС отладчике, так и в стандарт-
ном отладчике Turbo.
Если флаг находится в позиции Автономно, то программы могут
быть отлажены только с помощью отладчика Turbo, хотя могут запус-
каться в ТС. При положении флага "Выключено" программы не могут
быть отлажены по той причине, что в .EXE файле нет информации по
отладке.
Свопинг экрана (Display Swapping)
-----------------------------------------------------------------
Debug/Display Swapping ("подкачка" экрана при работе в сеан-
се отладки) имеет трехпозиционный флаг, который устанавливается в
следующих положениях: Smart (установлена по умолчанию); Always
(всегда); None (выключено).
При запуске своей программы в режиме отладки с установленным
по умолчанию флагом в положении Smart, отладчик просматривает ис-
полняемый код с тем, чтобы определить, будет код генерировать вы-
вод данных на экран или нет. Если код выполняет вывод данных на
экран (или если он вызывает функцию), то экран заменяется с экра-
на редактирования на пользовательский экран на время, достаточное
для вывода данных, затем возвращается экран редактирования. В
других случаях свопинга экрана не происходит.
Примечание: Smart, что дословно означает "сообразительный",
не во всех случаях отвечает своему названию:
- этот режим производит замену экрана при вызове любой функ-
ции даже в том случае, когда вызываемая функция не выводит данные
на экран;
- в некоторых случаях экран редактора может быть модифициро-
ван без замены. Например, когда происходят выдачи на экран во
время прерывания работы сервисной программы по таймеру.
При положении флага Always экран будет заменяться, когда бу-
дет выполняться оператор. Вы можете использовать этот режим каж-
дый раз, когда желаете переписать экран редактора вашей работаю-
щей программой.
- 353,354 -
При положении флага None отладчик не заменяет экран. Этот
режим мог бы использоваться для отладки сегментов кода, который,
по вашему мнению, не должен выводиться на экран.
Примечание: Если вы производите отладку в двухмониторном режиме
(т.е. использовали командную строку ТС /d ключ), то
можете увидеть вывод данных своей программы на одном
мониторе, а экран ТС на другом. Следовательно, ТС ни-
когда не заменяет экранов, а потому Debug/Screen
Swapping в этом случае неэффективен.
Регенерация дисплея (Refresh Display)
-----------------------------------------------------------------
Если экран редактора ошибочно переписан, вы можете использо-
вать эту опцию для восстановления предудыщего содержания.
Меню прерываний/слежения (Break/Watch Menu)
-----------------------------------------------------------------
Меню включает в себя команды, управляющие точками прерывания
и контрольными (следящими) выражениями.
Точка прерывания представляет собой то место в программе,
где происходит ее останов с тем, чтобы дать вам время проверить
значение критических переменных и выражений. Это нужно для того,
чтобы вы могли убедиться, что ваша программа работает так как на-
до.
Контрольная точка обозначается подсветкой контрольной точки.
Когда программа останавливается на точке прерывания, то ее подс-
ветка становится незаметной из-за полосы выполнения, но снова по-
является, когда полоса выполнения начинает двигаться.
Контрольное выражение представляет собой выражение, чье зна-
чение отображается в окне Watch. При останове программы контроль-
ное значение перевычисляется. Правила ввода правильного контроль-
ного выражения аналогичны правилам Debug/Evaluate
(отладки/оценки) за исключением того, что контрольное выражение
может не содержать побочных эффектов типа i++. Символы конверсно-
- 355,356 -
го типа, а также повторный счет могут быть использованы в конт-
рольных выражениях также, как и в Debug/Evaluate. Например:
i,x
отображает содержание целого числа i в шестнадцатиричном формате.
Если вы желаете ввести дополнительные выражения в окно
Watch, то можете увеличить его до максимальных размеров (около
половины экрана) с помощью опции изменения размеров окон сервис-
ной программы TCINST. Если вы вводите большее количество выраже-
ний, чем может поместиться в окне, то некоторые выражения исчеза-
ют из окна. Для их просмотра в окне Watch используются клавиши
"Страница вверх", "Страница вниз", "Стрелка вверх", "Стрелка
вниз".
Текущее контрольное выражение в окне Watch выделяется в слу-
чае, если окно Watch активно - полосой подсветки, если окно Watch
не активно - знаком "пуля" () в левой колонке.
╔───────────────────────────────────────────────────────────────╗
║ Files Edit Run Compile Project Options Debug ║ Break/watch ║
║───────────────────────── Edit ──────────────────────────────║
└─────┘ ║
║ Line 1 Col 1 Insert Indent Tab Fill ║Add watch CtrlF7║
║ ║────────────────────────║
║ ║Delete watch ║
║ ║Edit watch ║
║ ║Remove all watches ║
║ ║ ║
║ ║Toogle breakpoint CtrlF8║
║ ║Clear all breakpoints ║
║ ║View next breakpoints ║
║ └────────────────────────║
║ ║
═══════════════════════════ Watch ══════════════════════════════
║ ║
║Alt: F1-Last help F3-Pick F6-Swap F7/F8-Prv/Next err F9-Compile║
└───────────────────────────────────────────────────────────────┘
Рисунок 5.23. Меню Break/Watch.
- 357,358 -
Команда "Add Watch"
-----------------------------------------------------------------
Эта команда позволяет вывести контрольное выражение в окно
Watch. При выборе вами этой команды отладчик открывает окно в
верхней части экрана и запрашивает ввод контрольного выражения.
Текущим выражением является слово, на котором стоит курсор в эк-
ране редактирования. После того, как вы наберете правильное выра-
жение, нажмите Ввод. Отладчик добавит выражение и его текущее
значение в окно Watch.
"Горячим ключом" для этой команды является Ctrl-F7. Кроме
того, если окно Watch активно, то вы можете ввести новое конт-
рольное выражение, нажав на Ins (Вст), либо Ctrl-N.
Стирание контрольных выражений (Delete Watch)
-----------------------------------------------------------------
Эта команда стирает контрольные выражения из окна Watch. Для
того, чтобы вы могли использовать эту команду, вы должны видеть
окно Watch, т.е. в этом случае окно редактирования не может быть
раскрыто на весь экран дисплея. Если вы находитесь в окне Watch,
то текущее контрольное выражение обозначается полосой подсветки,
если вы находитесь в экране Edit, то оно обозначается знаком "пу-
ли" () с левой стороны.
Для стирания контрольного выражения, отмеченного знаком "пу-
ли", выберите Break/Watch/Delete Watch, если вы находитесь в окне
Edit. Для стирания контрольного выражения, не являющегося теку-
щим, вы должны выйти в окно Watch, переместить полосу подсветки
на необходимое выражение и нажать либо Del, либо Ctrl-Y.
Редактирование контрольных выражений (Edit Watch)
-----------------------------------------------------------------
Эта команда позволяет вам редактировать текущее контрольное
выражение в окне Watch.
- 359,360 -
Когда вы выбираете Break/Watch (Edit Watch), отладчик откры-
вает всплывающее окно, содержащее копию текущего контрольного вы-
ражения. Отредактировав его, нажмите Ввод; Отладчик произведет
замену прежнего варианта контрольного выражения на новый отредак-
тированный вариант. Вы можете также редактировать контрольное вы-
ражение из окна Watch путем перемещения полосы подсветки на необ-
ходимое выражение и нажатия клавиши Ввод.
Стирание всех контрольных выражений (Remove all Watches)
-----------------------------------------------------------------
Эта команда позволяет стереть все контрольные выражения из
окна Watch.
Флаг точки прерывания (Toggle Breakpoint)
-----------------------------------------------------------------
Эта команда позволяет устанавливать или убирать точку преры-
вания в строке в месте расположения курсора. При установке точки
прерывания она выделяется подсветкой.
Для запуска команды нажмите клавиши Ctrl-F8.
Каждый раз, когда ваша программа будет доходить до точки
прерывания, ее выполнение будет прекращаться. Во время остановки
программы полоса подсветки находится на строке с точкой прерыва-
ния. Подсветка точки прерывания становится незаметной из-за подс-
веченной полосы выполнения. Как только полоса выполнения начинает
перемещаться, появляется выделение точки прерывания.
При редактировании исходного файла каждая точка прерывания
"втыкается" в строку, где была установлена. Она может потеряться
только когда вы покидаете интегрированную среду, стираете исход-
ную строку, где находится точка прерывания, либо убираете ее с
помощью команд Break/Watch/Toggle Breakpoint или
Break/Watch/Clear All Breakpoint.
Турбо Си "теряет дорогу" по своим точкам прерывания в двух
случаях:
- 361,362 -
- если вы редактируете файл, содержащий точки прерывания, а
затем отказываетесь от отредактированной версии файла.
(Турбо Си не может запомнить места установки точек преры-
вания, прежде чем файл будет отредактирован, поэтому пока-
зывает их в неправильных строках);
- если вы редактируете файл, содержащий точки прерывания, а
затем продолжаете сеанс отладки без отметки в программе.
(Турбо Си отобразит предупреждающий запрос: Source
modified, rebuild? (Исходный текст модифицирован, перест-
роен)
Прежде, чем вы будете компилировать исходный файл, вы можете
установить точку прерывания в любой строке, даже в чистой, или в
комментарии. Когда вы откомпилируете и запустите файл, Турбо Си
проверит расположение точек прерывания и даст вам возможность пе-
реместить, игнорировать или изменить неправильные точки прерыва-
ния. При отладке файла Турбо Си, зная расположение выполняемых
операторов, выдаст предупреждение об ошибке в установке точки
прерывания.
Убирание всех точек прерывания (Clear All Breakpoint)
-----------------------------------------------------------------
Эта команда убирает все точки прерывания из вашей программы.
Смотри следующую точку прерывания (View next Breakpoint)
-----------------------------------------------------------------
Эта команда перемещает курсор на следующую точку прерывания
в вашей программе. Обратите внимание на то, что курсор перемес-
тится на следующую точку прерывания, исходя из порядка их уста-
новки, а не порядка их расположения в вашей программе. Эта коман-
да не запускает вашу программу; она только размещает активные
точки прерывания в окне редактирования.
- 363,364 -