Чтение онлайн

на главную - закладки

Жанры

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

Самьюэл Алекс

Шрифт:

(by default, use executable directory).

 -p, --port PORT Bind to specified port.

 -v, --verbose Print verbose messages.

11.5. Вместо эпилога

Планируя распространять программу в Internet, не забудьте написать для нее документацию. Многие люди не осознают, что создать качественную документацию так же трудно и долго, как и написать хорошую программу. Правда, вопрос подготовки документации — тема отдельной книги, поэтому

мы лишь укажем, где можно получить информацию по данной теме.

Вероятнее всего, для программы потребуется создать

man
– страницу. Это первое место, куда пользователи обращаются за информацией о программе. Страницы интерактивной документации форматируются с помощью классической программы
troff
. Чтобы узнать формат
troff
– файлов, введите такую команду:

% man troff

Чтобы узнать, как ОС Linux ищет

man
– страницы, просмотрите справочную информацию о самой команде
man
:

% man man

Можно также подготовить документацию в формате GNU-системы Info. Для получения информацию об этой системе выполните команду

% info info

Для многих Linux-лрограмм имеется также документация в формате простого текста и HTML.

Удачного программирования!

Часть III

Приложения

Приложение А

Вспомогательные инструменты разработки

Разработка безошибочных и быстрых Linux-программ требует не только понимания операционной системы Linux и ее системных вызовов. В этом приложении будут рассмотрены методики, позволяющие находить ошибки периода выполнения (например, неправильное использование оперативной памяти) и определять, какие компоненты программы требуют наибольших вычислительных ресурсов. Анализ программного кода дает лишь часть этой информации; чтобы получить остальную часть, необходимо запустить программу и воспользоваться описанными ниже инструментами.

А.1. Статический анализ программы

Некоторые программные ошибки можно выявить, воспользовавшись средствами статического анализа исходных текстов. Если вызвать компилятор

gcc
с флагами
– Wall
и
– pedantic
, он выдаст предупреждения о рискованных и потенциально ошибочных программных конструкциях. Исправив эти конструкции, вы снизите вероятность появления в программе скрытых ошибок, а также упростите компиляцию программы в других вариантах Linux или даже в других операционных системах.

С помощью различных флагов командной строки можно заставить компилятор

gcc
выдавать предупреждения о множестве спорных программных конструкций. Большинство проверок включается флагом
– Wall
. Например, компилятор будет сообщать о комментарии, начинающемся в другом комментарии, о неправильном типе возвращаемого значении в функции
main
,
о функциях, в которых пропущена инструкция
return
, и т.д. При наличии флага
– pedantic
компилятор будет выдавать предупреждения о несоответствии стандарту ANSI. В частности, будет сообщаться о наличии функции
asm
и других GNU-расширений языка. В документации к компилятору не рекомендуется использовать этот флаг. Мы же советуем избегать большинства GNU-расширений, так как они имеют тенденцию меняться со временем и плохо поддаются оптимизации.

Попробуем скомпилировать программу "Hello, World", представленную в листинге А.1.

Листинг А.1. (hello.c) Простейшая программа

main {

 printf("Hello, world.\n");

}

Будучи вызванным без флагов, компилятор не выдаст никаких предупреждений, хотя программа не соответствует стандарту ANSI Если же включить флаги

– Wall
и
– pedantic
, то обнаружатся три спорные конструкции:

% gcc -Wall -pedantic hello.c

hello.c:2: warning: return type defaults to 'int'

hello.c: In function 'main':

hello.c:3: warning: implicit declaration of function 'printf'

hello.c:4: warning: control reaches end of non-void function

Компилятор сообщает о следующих проблемах:

■ не указан тип возвращаемого значения функции

main
;

■ функция

printf
не объявлена, так как файл
<stdio.h>
не включен в программу;

■ функция

main
, которая неявно возвращает значение типа
int
, не содержит инструкцию
return
.

Анализ исходных текстов программы не позволяет выявить все возможные ошибки и неэффективные конструкции. В следующем разделе описываются четыре средства поиска ошибок при работе с динамической памятью. В конце приложения будет рассказано о том, как анализировать время работы программы с помощью утилиты-профайлера

gprof
.

А.2. Поиск ошибок в динамической памяти

При написании программы зачастую неизвестно, сколько памяти потребуется ей во время выполнения. Например, строка, читаемая из файла, может иметь любую длину. Работа с динамической памятью осуществляется посредством функций

malloc
,
free
и их вариантов. Следует придерживаться таких правил:

■ число запросов на выделение памяти (вызовов функции

malloc
) должно в точности совпадать с чистом запросов на освобождение памяти (вызовов функции
free
);

Поделиться:
Популярные книги

Кодекс Охотника. Книга XXXIX

Сапфир Олег
39. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
боевая фантастика
5.00
рейтинг книги
Кодекс Охотника. Книга XXXIX

Я до сих пор царь. Книга XXXII

Дрейк Сириус
32. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я до сих пор царь. Книга XXXII

Барон ненавидит правила

Ренгач Евгений
8. Закон сильного
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Барон ненавидит правила

Представь себе… Беседы о деньгах, политике и жизни вообще

Гьямцхо? Нгагва?нг Ловза?нг Тэнцзи?н
Религия и эзотерика:
самосовершенствование
5.00
рейтинг книги
Представь себе… Беседы о деньгах, политике и жизни вообще

Точка Бифуркации VI

Смит Дейлор
6. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.40
рейтинг книги
Точка Бифуркации VI

Свадьба на выбор, или Женихи в ассортименте

Царева Маша
Любовные романы:
современные любовные романы
7.71
рейтинг книги
Свадьба на выбор, или Женихи в ассортименте

Неучтенный элемент. Том 10

NikL
10. Антимаг. Вне системы
Фантастика:
фэнтези
5.25
рейтинг книги
Неучтенный элемент. Том 10

Литрпг

Казначеев Виктор
5.00
рейтинг книги
Литрпг

Тринадцатый

NikL
1. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
7.33
рейтинг книги
Тринадцатый

Записки уцелевшего

Голицын Сергей Михайлович
Документальная литература:
биографии и мемуары
7.00
рейтинг книги
Записки уцелевшего

Мифы и правда о плане Барбаросса

Веремеев Юрий Георгиевич
Анатомия армии
Научно-образовательная:
история
5.00
рейтинг книги
Мифы и правда о плане Барбаросса

Цикл "Идеальный мир для Лекаря". Компиляция. Книги 1-30

Сапфир Олег
Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Цикл Идеальный мир для Лекаря. Компиляция. Книги 1-30

Игра киллера

Бонансинга Джей
Детективы:
боевики
6.25
рейтинг книги
Игра киллера

Законы рода

Мельник Андрей
1. Граф Берестьев
Фантастика:
фэнтези
боевая фантастика
аниме
4.75
рейтинг книги
Законы рода