| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
-----------------------------------------------------------------
Интегрированная среда Турбо Си включает отладчик, который
называется интегрированным отладчиком. В этой главе мы объясним,
как пользоваться отладчиком Турбо Си.
Глава начинается с серии примеров, демонстрирующих примене-
ние отладчика. В первом примере показаны простейшие возможности
распознавания "легких" ошибок. И следующие примеры иллюстрируют
более сложные возможности отладчика.
Затем будет рассмотрено меню команд отладчика с соответству-
ющими "горячими" клавишами или комбинациями "горячих" клавиш, а
также будет дано описание каждой команды.
И, наконец, мы дадим несколько советов, облегчающих отладку.
Многие из этих советов касаются не только самого процесса отлад-
ки, но и того, как вообще лучше писать программы, поэтому боль-
шинство из этих идей вы можете применять не только в Турбо Си, но
и в любых других языках программирования.
- 127,128 -
Как работает интегрированный отладчик
-----------------------------------------------------------------
Интегрированный отладчик Турбо Си - это символьный отладчик,
работающий в терминах языка программирования. Это значит, что вы
можете "общаться" с отладчиком с помощью того же языка, на кото-
ром написана ваша программа. Например, вы можете просмотреть ве-
личину элемента массива, указав его отладчику с помощью следующе-
го выражения:
rptr->image[nptr+0x80]
Отлаживать свою программу вы сможете просто запустив ее с
помощью элемента меню Run/Run ("горячая" клавиша Ctrl-F9). При-
чем, для подключения отладчика к вашей программе, необходимо ее
откомпилировать с "установленным" (On) вариантом меню Source
Debugging. (Установить этот вариант меню можно выбрав
Debug/SOURCE Debugging).
Перед выполнением программы вы можете установить в ней точки
останова, указав их в одной или нескольких строках исходного
текста вашей программы. Когда отлаживаемая программа встретит
точку останова, она остановится перед первым оператором строки, в
которой эта точка задана, и возвратит вам управление отладчиком.
В момент остановки программы вы можете выполнять самые раз-
личные действия. Например, вы можете:
# вывести значение переменной или выражения;
# задать в специальном окне список выражений и наблюдать за
изменениями их значений;
# изменить значение переменной;
# удалить существующую точку останова или задать новую;
# выполнить одну строку программы;
# исправить файл, перекомпилировать и перекомпоновать прог-
рамму или использовать любые другие возможности меню системы Тур-
бо Си;
# продолжить выполнение программы до тех пор, пока не встре-
- 129,130 -
тится другая точка останова.
Рисунок 4.1 иллюстрирует типичный алгоритм сеанса отладки.
(Заметьте, что на нем не показаны возможности отладчика на каждом
отдельном шаге.)
ЪДДДДДДДДДДДДДДДДДДДДДї
іНаписание или модифи-і
і кация программы і
АДДДДДДДДДДВДДДДДДДДДДЩ
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і ЪДДДДДДДДДДДБДДДДДДДДДДДДДДДДДї
і іСоздание (компиляция и компо-і
і і новка) программы і
і АДДДДДДДДДДДВДДДДДДДДДДДДДДДДДЩ
і і
і
і
ЪДДБДДДДДДДДї Да Ошибки
іИсправлениеГДДДДДДД компиляции и/или
і ошибок і редактирования ?
АДДВДДДДДДДДЩ
і і
і іНет
і і
і ЪДДДДДДДДДДБДДДДДДДДДДДДДї
і іЗадание или изменение і
і і точек останова і
і АДДДДДДДДДДВДДДДДДДДДДДДДЩ
і ЪДДДДДДДДДДБДДДДДДДДї
і і Запуск программы і
і АДДДДДДДДДДВДДДДДДДДЩ
і і
і і
ЪДДДДБДДДДДДї
іИсправлениеі Ошибки Нет ЪДДДДДДДДДї
і ошибок і выполнения ?ДДДДДДДДДДґ Останов і
АДДДДВДДДДДДЩ і і
і і АДДДДДДДДДЩ
і і Да
і і
і ЪДДДДДДДДДДБДДДДДДДДї
АДДДДДДДДДДДДДДДДДДґОтладка программы і
АДДДДДДДДДДДДДДДДДДДЩ
- 131,132 -
Рисунок 4.1: Типичный алгоритм процесса отладки
Пример 1: Отладка простой программы.
Для получения первого опыта отладки с помощью Турбо Си, вы
можете воспользоваться программой, приведенной ниже. Мы ее назва-
ли WORDCNT. Она выводит содержимое текстового файла и подсчитыва-
ет длины его слов, то есть сообщает о том, сколько в этом файле
есть слов, состоящих из одной, двух и т.д. букв. К несчастью,
WORDCNT содержит несколько ошибок, и вы должны их найти, исполь-
зуя для этой цели отладчик.
Программа WORDCNT находится в файле WORDCNT.C на одном из
дистрибутивных дисков. Для того, чтобы сохранить ее "нетронутой",
скопируйте ее в ваш каталог Турбо Си.
Если вы работаете в каталоге, не содержащем Турбо Си, то
сделайте в нем рабочие копии файлов проекта WORDCNT.C и
WORDCNT.PRJ. Все три файла должны быть на дистрибутивных дисках и
в вашем каталоге Турбо Си.
/*****
* Read a text file; count the numberof words of length 1, 2, 3,
* etc. (Прим. Диалог с пользователем здесь адаптирован, на
* дистрибутивных дисках - нет )
* Note: This programm is for use with the debugging tutorial
* in the debbuging chapter of the User's Guide. It
* intetionally contains bugs.
*****/
#include
#include
#define MAXWORDLEN 16
#define NULL ((char)0)
#define SPACE ((char)0x20)
/*****
* Find the next word in the line buffer.
* IN: wordptr points to the first character of a word or a
* preceding space.
- 133,134 -
* RETURN: A pointer to the first character of the word. If there
* are no more words, a pointer to the terminating NUL.
*****/
char *nextword(char *wordptr)
{
/* Advance to the first non-space. */
while ( *wordptr==SPACE )
wordptr++;
return (wordptr);
}
/*****
* Find the length of a word. A word is defined as sequence of
* characters terminated by a space or a NUL.
* IN: wordptr points to a word.
* RETURN: The length of the word.
*****/
int wordlen(char *wordptr)
{
char *wordlimit;
wordlimit = wordptr;
while ( *wordlimit & *wordlimit!=SPACE )
*wordlimit++;
return(wordlimit-wordptr);
}
/*****
* The main function.
*****/
|
adfun.ru
|
|
|
|