Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Программирование для Linux. Профессиональный подход - Митчелл М.

Митчелл М., Оулдем Дж., Самьюал А. Программирование для Linux. Профессиональный подход — М.: Вильямс , 2003. — 288 c.
ISBN 5-8459-0243-6
Скачать (прямая ссылка): programmirovaniedlyalinux2003.djvu
Предыдущая << 1 .. 3 4 5 6 7 8 < 9 > 10 11 12 13 14 15 .. 128 >> Следующая

ей нулевой указатель, что и стало причиной ошибки.
С помощью команды up можно подняться но стеку на два уровня, дойдя до
функции
main():
(gdb) up 2
#2 0х804863е in main (argc-1, argv=0xbffff5e4) at main.c:8
8 i " atoi (argvflj);
Заметьте, что отладчик иашел исходный файл main, с и отобразил строку,
где располагается ошибочный вызов функции. Узнать значение нужной
локальной переменной позволяет команда print:
(gdb) print argv[l]
$2 = 0x0
Это подтверждает нашу догадку о том, что причина ошибки - передача
функции atoi (J указателя NULL.
Установка контрольной точки осуществляется посредством команды break:
(gdb) break mam
Breakpoint 1 at 0x804862e: file main.c, line 8.
24 Часть I. Сложные вопросы программирования в среде UNIX/Linux
В данном случае контрольная точка размещена в первой строке функции main
О. Давайте теперь заново запустим программу, передав ей один аргумент:
(gdb) run 7
Starting program: reciprocal 7
Breakpoint 1, main (argc-2# argv=Oxbffff5e4) at main.c:B В i = atoi
(argv(lj);
Как видите, отладчик остановился на контрольной точке- Перейти на
следующую строку можно с помощью команды next:
(gdb) next
9 printf ("The reciprocal of %d is %g\n", i,
reciprocal(i))i
Если требуется узиать, что происходит внутри функции reciprocal О,
воспользуйтесь командой step:
(gdb) step
reciprocal (i-7) at reciprocal.cpp:6
6 assert (i l_ 0);
Иногда удобнее запускать отладчик gdb непосредственно из редактора Emacs,
а не из командной строки. Для этого следует ввести в редакторе команду М-
х gdb. Когда отладчик останавливается в контрольной точке, редактор Emacs
автоматически открывает соответствующий исходный файл. Не правда ли.
проще разобраться в происходящем, глядя на весь файл, а не иа одну его
строку?
1.5. Поиск дополнительной информации
В каждый дистрибутив Linux входит масса полезной документации. В ней
можно прочесть почти все из того, о чем говорится в этой книге (хотя это,
очевидно, займет больше времени). Документация не всегда хорошо
организована, поэтому поиск нужной информации требует определенной
изобретательности. Иногда представленные факты оказываются устаревшими,
так что не стоит всему слепо верить.
Ниже описаны наиболее полезные источники информации о программировании в
Linux.
1.5.1. Интерактивная документация
В дистрибутивы Linux входят тап-страницы с описанием большинства
стандартных команд, системных вызовов и стандартных библиотечных функций.
Интерактивная документация разбита на разделы, которым присвоены номера
Для программистов наиболее важными являются следующие разделы:
(1) пользовательские команды;
(2) системные вызовы:
(3) стандартные библиотечные функции:
(8) системные/административные команды.
Числа обозначают номера разделов. Для доступа к страницам интерактивной
документации применяется команда man. Оиа имеет анд man имя, где имя -
название команды или функции. Иногда одно и то же имя встречается в
разных разделах В этом случае иомер раздела нужно указать явно, поставив
его перед именем. К примеру, так вызывается страница с описанием команды
sleep (находящаяся в первом разделе):
% man sleep
Глава 1 Начало 25
А следующая команда вызывает страницу с описанием библиотечной функции
sleep ();
* man 3 sleep
Каждая шап-страница содержит однострочное резюме команды или функции.
Команда wharis имя отображает список всех тап-страниц (во всех разделах),
связанных с указанным именем. Если не известно точно, описание какой
команды или функции требуется, можно выполнить поиск по ключевому слову в
строках резюме с помощью команды пап -к кмючевсе_словс.
Страницы интерактивной документации содержат множество полезной
информации и являются первым источником, к которому следует обращаться за
помощью. В случае команды хпап-страница описывает ее флаги и аргументы,
входные и выходные значения, ко* ды ошибок установки по умолчанию и т.п.
В случае системного вызова или библиотечной функции описываются параметры
и возвращаемые значения, коды ошибок и побочные эффекты, а также
указывается, какие файлы заголовков нужно включать в программу при
использовании функции.
1.5.2. Система Info
Система Info содержит гораздо более подробную документацию ко миогим
базовым компонентам GNU/Linux, а также к ряду других программ.
Информационные страницы представляют собой гипертекстовые документы,
напомииающие Web-страницы. Для запуска текстовой версии справочной
системы Info достаточно ввести info в командной строке Появится меню с
описанием иерархии документов, установленных в системе. Нажав <Ctrl+H>,
можно получить список клавиш, посредством которых осуществляется
навигация по документам системы Info.
Среди наиболее потезных документов перечислим следующие:
¦ gcc - описание компилятора gcc;
¦ libc - описание GNU-библиотеки языка С, содержащей множество
системных вызовов,
¦ gdb - описание GMJ-отладчика;
¦ emacs - описание редактора Emacs:
¦ info - описание самой системы Info.
Можно сразу вызвать нужную страницу, задав ее имя в командной строке:
Предыдущая << 1 .. 3 4 5 6 7 8 < 9 > 10 11 12 13 14 15 .. 128 >> Следующая