Стефан Дэвис - С++ для чайников .
- Название:С++ для чайников .
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс. Компьютерное издательство Диалектика
- Год:2007
- Город:Москва
- ISBN:0-7645-6852-3, 978-5-8459-0723-3
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стефан Дэвис - С++ для чайников . краткое содержание
1
empty-line
4
С++ для чайников . - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Следующий шаг ( Step Over ) — —
Продолжить выполнения — —
Просмотр переменной ( View Variable ) — Только в меню — Только в меню
Установка точки останова ( Set Breakpoint )* — —
Добавить в наблюдаемые ( Add watch ) — Только в меню —
Перезагрузка программы ( Program Reset ) — —
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
__________
*Щелчок слева от строки исходного текста С++ в окне редактора представляет собой альтернативный путь установки точек останова.
_________________
134 стр. Часть 2. Становимся функциональными программистами
Запуск тестовой программы...135
«Лучший способ исправить ошибки в программе — пройти её пошагово. Приведённая ниже программа содержит несколько ошибок, которые надо найти и исправить. Эта программа имеется на прилагаемом компакт-диске в файлеConcatenate1.срр .»
[ Диск ]
/* Concatenate - конкатенация двух строк */
/* со вставкой " - " между ними. В этой версии имеются ошибки. */
#include
#include
#include
#include
using namespace std ;
void stringEmUp( char* szTarget ,
char* szSource1 ,
char* szSource2 ,
int nLength ) ;
int main( int nNumberofArgs , char* pszArgs[ ] )
{
/* печать кириллицы, если Вы не установите программки gccrus.exe и g++rus.exe */
setlocale (LC_ALL,".1251");
cout << "Конкатенация двух строк со вставкой \" - \"\n"
<< "( В этой версии имеются ошибки. )" << endl ;
char szStrBuffer[ 256 ] ;
/* Создание двух строк одинаковой длины... */
char szString1[ 16 ] ;
strncpy( szString1 , "This is a string" , 16 ) ;
char szString2[ 16 ] ;
strncpy( szString2 , "THIS IS A STRING" , 16 ) ;
/* ...и объединение их в одну */
stringEmUp( szStrBuffer ,
szString1 ,
szString2 ,
16 ) ;
// Вывод результата
cout << "<" << szStrBuffer << ">" << endl ;
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ; return 0 ;
}
void stringEmUp(char* szTarget,
char* szSource1,
char* szSource2,
int nLength)
{
strcpy( szTarget , szSource1 ) ;
strcat( szTarget , " - " ) ;
strcat( szTarget , szSource2 ) ;
}
_________________
135 стр. Глава 10. Отладка программ на С++
Соберите и запустите программу. Вместо объединения двух строк программа может вернуть всё, что угодно. Нам надо обратиться к отладчику, чтобы разобраться, что же в этой программе не так.
Пошаговое выполнение программы...136
Первое, что стоит сделать при поиске ошибки с помощью отладчика, — это выполнить программу в отладочном режиме. Попытка выполнить эту программу в отладочном режиме в Dev-C++ ( с помощью клавиши ) приводит к появлению диалогового окна с сообщением об ошибке "Ваша программа вызвала нарушение доступа". Этой информации слишком мало, чтобы разобраться, в чём проблема.
«Подобное сообщение об ошибке обычно говорит о некорректной работе с указателями того или иного типа.»
[ Советы ]
Команда Остановить выполнениезаставляет отладчик заново начать работу с программой ( а не с того места, где вы находитесь ). Никогда не вредно перезагрузить отладчик перед началом работы.
Для того, чтобы увидеть, где именно таится проблема, выполните только часть программы. Отладчик позволяет сделать это посредством так называемых точек останова ( breakpoints). Отладчик всякий раз прекращает выполнение программы при прохождении через точку останова, и передаёт управление программисту.
Установим точку останова на первой выполнимой инструкции, щёлкнув слева от строки вывода в cout или воспользовавшись клавишами , как сказано в табл. 10.1. При этом вы увидите появившийся маленький красный кружок, говорящий об установленной точке останова ( рис. 10.2 ).
Теперь продолжим выполнение программы под отладчиком, либо выбирая команду меню Debug => Debug ( Отладка => Отладка ) , либо щелчком на соответствующей пиктограмме в панели отладки, либо при помощи клавиши . Выполнение программы немедленно прекращается на первой же строке, а подсветка строки из красной делается синей, указывая, что выполнение программы заморожено на данной строке.
Теперь вы можете выбрать в меню команду Debug => Next Step ( Отладка => Следующий шаг ) либо нажать клавишу для выполнения одной строки программы.
Синяя подсветка перемещается к следующей выполнимой инструкции, пропуская два объявления переменных. ( Объявления не являются выполнимыми командами; они всего лишь выделяют память для объявляемых переменных. ) Такое выполнение одной инструкции С++ называется пошаговым выполнением программы. Вы можете переключиться в окно консоли программы и посмотреть, что именно вывела программа при выполнении этой инструкции ( рис. 10.3 ).
_________________
136 стр. Часть 2. Становимся функциональными программистами
Рис. 10.2. Точку останова легко опознать по маленькому красному кружку
Рис. 10.3. В любой момент вы можете переключиться на окно выполняемой программы
Выполнение двух последующих инструкций приводит нас к вызову функции StringEmUp( ) .
Если опять выбрать команду Debug => Next Step ( Отладка => Следующий шаг ) , программа аварийно завершится. Теперь мы знаем, что проблема кроется в этой функции.
«Если сбой происходит при вызове некоторой функции, то либо ошибка содержится в коде функции, либо ей передаются некорректные аргументы.»
Читать дальшеИнтервал:
Закладка: