Программирование для Linux. Профессиональный подход - [7]
>print:>(gdb) print argv[1]
>$2 = 0x0
Это подтверждает нашу догадку о том, что причина ошибки — передача функции >atoi() указателя >NULL.
Установка контрольной точки осуществляется посредством команды >break:
>(gdb) break main
>Breakpoint 1 at 0x804862e: file main.c, line 8.
В данном случае контрольная точка размещена в первой строке функции >main(). Давайте теперь заново запустим программу, передав ей один аргумент:
>(gdb) run 7
>Starting program: reciprocal 7
>Breakpoint 1, main (argc=2, argv=0xbffff5e4) at main.c:8
>8 i = atoi(argv[1]);
Как видите, отладчик остановился на контрольной точке- Перейти на следующую строку можно с помощью команды >next:
>(gdb) next
>9 printf("The reciprocal of %d is %g\n", i,
>reciprocal(i));
Если требуется узнать, что происходит внутри функции >reciprocal(), воспользуйтесь командой >step:
>(gdb) step
>reciprocal (i=7) at reciprocal.cpp:6
>6 assert(i != 0);
Иногда удобнее запускать отладчик >gdb непосредственно из редактора Emacs, а не из командной строки. Для этого следует ввести в редакторе команду >M-x gdb. Когда отладчик останавливается в контрольной точке, редактор Emacs автоматически открывает соответствующий исходный файл. Не правда ли. проще разобраться в происходящем, глядя на весь файл, а не на одну его строку?
1.5. Поиск дополнительной информации
В каждый дистрибутив Linux входит масса полезной документации. В ней можно прочесть почти все из того, о чем говорится в этой книге (хотя это, очевидно, займет больше времени). Документация не всегда хорошо организована, поэтому поиск нужной информации требует определенной изобретательности. Иногда представленные факты оказываются устаревшими, так что не стоит всему слепо верить.
Ниже описаны наиболее полезные источники информации о программировании в Linux.
1.5.1. Интерактивная документация
В дистрибутивы Linux входят >man-страницы с описанием большинства стандартных команд, системных вызовов и стандартных библиотечных функций. Интерактивная документация разбита на разделы, которым присвоены номера. Для программистов наиболее важными являются следующие разделы:
(1) пользовательские команды;
(2) системные вызовы:
(3) стандартные библиотечные функции:
(8) системные/административные команды.
Числа обозначают номера разделов. Для доступа к страницам интерактивной документации применяется команда >man. Она имеет вид >man имя, где имя — название команды или функции. Иногда одно и то же имя встречается в разных разделах. В этом случае номер раздела нужно указать явно, поставив его перед именем. К примеру, так вызывается страница с описанием команды >sleep (находящаяся в первом разделе):
>% man sleep
А следующая команда вызывает страницу с описанием библиотечной функции >sleep():
>% man 3 sleep
Каждая >man-страница содержит однострочное резюме команды или функции. Команда >whatis имя отображает список всех >man-страниц (во всех разделах), связанных с указанным именем. Если не известно точно, описание какой команды или функции требуется, можно выполнить поиск по ключевому слову в строках резюме с помощью команды >man -k ключевое_слово.
Страницы интерактивной документации содержат множество полезной информации и являются первым источником, к которому следует обращаться за помощью. В случае команды >man-страница описывает ее флаги и аргументы, входные и выходные значения, коды ошибок установки по умолчанию и т.п. В случае системного вызова или библиотечной функции описываются параметры и возвращаемые значения, коды ошибок и побочные эффекты, а также указывается, какие файлы заголовков нужно включать в программу при использовании функции.
1.5.2. Система Info
Система Info содержит гораздо более подробную документацию ко многим базовым компонентам GNU/Linux, а также к ряду других программ. Информационные страницы представляют собой гипертекстовые документы, напоминающие Web-страницы. Для запуска текстовой версии справочной системы Info достаточно ввести >info в командной строке. Появится меню с описанием иерархии документов, установленных в системе. Нажав
Среди наиболее полезных документов перечислим следующие:
■ >gcc — описание компилятора >gcc;
■ >libc — описание GNU-библиотеки языка С, содержащей множество системных вызовов,
■ >gdb — описание GNU-отладчика;
■ >emacs — описание редактора Emacs;
■ >info — описание самой системы Info.
Можно сразу вызвать нужную страницу, задав ее имя в командной строке:
>% info libs
Те, кто в основном работают в Emacs, могут вызвать встроенный модуль просмотра документов Info, набрав >M-x info или >C-h i.
1.5.3. Файлы заголовков
Много информации о системных функциях можно почерпнуть из системных файлов заголовков. Они находятся в каталогах >/usr/include и >/usr/include/sys. Например, если компилятор сообщает об ошибке вызова системной функции, загляните в соответствующий файл заголовков и убедитесь, что реальный прототип функции соответствует описанному на
В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИИнформационная технологияРУКОВОДСТВО ПО УПРАВЛЕНИЮ ДОКУМЕНТИРОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯInformation technology. Guidelines for the management of software documentationИздание официальноеДата введения 1994-07-01ГОССТАНДАРТ РОССИИ Москва© Издательство стандартов, 1994.
Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы.