Страница 16 из 69
-----------------------------------------------------------------
Интегрированная среда Турбо Си включает отладчик, который
называется интегрированным отладчиком. В этой главе мы объясним,
как пользоваться отладчиком Турбо Си.
Глава начинается с серии примеров, демонстрирующих примене-
ние отладчика. В первом примере показаны простейшие возможности
распознавания "легких" ошибок. И следующие примеры иллюстрируют
более сложные возможности отладчика.
Затем будет рассмотрено меню команд отладчика с соответству-
ющими "горячими" клавишами или комбинациями "горячих" клавиш, а
также будет дано описание каждой команды.
И, наконец, мы дадим несколько советов, облегчающих отладку.
Многие из этих советов касаются не только самого процесса отлад-
ки, но и того, как вообще лучше писать программы, поэтому боль-
шинство из этих идей вы можете применять не только в Турбо Си, но
и в любых других языках программирования.
- 127,128 -
Как работает интегрированный отладчик
-----------------------------------------------------------------
Интегрированный отладчик Турбо Си - это символьный отладчик,
работающий в терминах языка программирования. Это значит, что вы
можете "общаться" с отладчиком с помощью того же языка, на кото-
ром написана ваша программа. Например, вы можете просмотреть ве-
личину элемента массива, указав его отладчику с помощью следующе-
го выражения:
rptr->image[nptr+0x80]
Отлаживать свою программу вы сможете просто запустив ее с
помощью элемента меню Run/Run ("горячая" клавиша Ctrl-F9). При-
чем, для подключения отладчика к вашей программе, необходимо ее
откомпилировать с "установленным" (On) вариантом меню Source
Debugging. (Установить этот вариант меню можно выбрав
Debug/SOURCE Debugging).
Перед выполнением программы вы можете установить в ней точки
останова, указав их в одной или нескольких строках исходного
текста вашей программы. Когда отлаживаемая программа встретит
точку останова, она остановится перед первым оператором строки, в
которой эта точка задана, и возвратит вам управление отладчиком.
В момент остановки программы вы можете выполнять самые раз-
личные действия. Например, вы можете:
# вывести значение переменной или выражения;
# задать в специальном окне список выражений и наблюдать за
изменениями их значений;
# изменить значение переменной;
# удалить существующую точку останова или задать новую;
# выполнить одну строку программы;
# исправить файл, перекомпилировать и перекомпоновать прог-
рамму или использовать любые другие возможности меню системы Тур-
бо Си;
# продолжить выполнение программы до тех пор, пока не встре-
- 129,130 -
тится другая точка останова.
Рисунок 4.1 иллюстрирует типичный алгоритм сеанса отладки.
(Заметьте, что на нем не показаны возможности отладчика на каждом
отдельном шаге.)
ЪДДДДДДДДДДДДДДДДДДДДДї
іНаписание или модифи-і
і кация программы і
АДДДДДДДДДДВДДДДДДДДДДЩ
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і ЪДДДДДДДДДДДБДДДДДДДДДДДДДДДДДї
і іСоздание (компиляция и компо-і
і і новка) программы і
і АДДДДДДДДДДДВДДДДДДДДДДДДДДДДДЩ
і і
і
і
ЪДДБДДДДДДДДї Да Ошибки
іИсправлениеГДДДДДДД компиляции и/или
і ошибок і редактирования ?
АДДВДДДДДДДДЩ
і і
і іНет
#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.
*****/