Нейл Мэтью - Основы программирования в Linux

Здесь есть возможность читать онлайн «Нейл Мэтью - Основы программирования в Linux» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Санкт-Петербург, Год выпуска: 2009, ISBN: 2009, Издательство: «БХВ-Петербург», Жанр: Программирование, ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Основы программирования в Linux: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Основы программирования в Linux»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым.
Для начинающих Linux-программистов

Основы программирования в Linux — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Основы программирования в Linux», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

==4780== at 0x804843A: main (checker.с: 13)

==4780== Address 0x4170428 is 0 bytes after a block of size 1,024 alloc'd

==4780== at 0x4023785: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)

==4780== by 0x80484 20: main (checker.c: 6)

==4780==

==4780== 1 errors in context 2 of 2:

==4780== Invalid read of size 1

==4780== at 0x804842C: main (checker.c:10)

==4780== Address 0x4170428 is 0-bytes after a block of size 1,024 alloc'd

==4780== at 0x4023785: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)

==4780== by 0x8048420: main (checker.с: 6)

--4780--

--4780-- supp: 3 dl-hack3

==4780==

==4780== IN SUMMARY: 2 errors from 2 contexts (suppressed: 3 from 1)

==4780==

==4780== malloc/free: in use at exit: 1,024 bytes in 1 blocks.

==4780== malloc/free: 1 allocs, 0 frees, 1,024 bytes allocated.

==4780==

==4780== searching for pointers to 1 not-freed blocks.

==4780== checked 65,444 bytes.

==4780==

==4780==

==4780== 1,024 bytes in 1 blocks are definitely lost in loss record 1 of 1

==4780== at 0x4023785: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)

==4780== by 0x8048420: main (checker.c: 6)

==4780==

==4780== LEAK SUMMARY:

==4780== definitely lost: 1,024 bytes in 1 blocks.

==4780== possibly lost: 0 bytes in 0 blocks.

==4780== still reachable: 0 bytes in 0 blocks.

==4780== suppressed: 0 bytes in 0 blocks.

--4780-- memcheck: sanity checks: 0 cheap, 1 expensive

--4780-- memcheck: auxmaps: 0 auxmap entries (0k, 0M) in use

--4780-- memcheck: auxmaps: 0 searches, 0 comparisons

--4780-- memcheck: SMs: n_issued = 9 (144k, 0M)

--4780-- memcheck: SMs: n_deissued = 0 (0k, 0M)

--4780-- memcheck: SMs: max_noaccess = 65535 (1048560k, 1023M)

--4780-- memcheck: SMs: max_undefined = 0 (0k, 0M)

--4780-- memcheck: SMs: max_defined = 19 (304k, 0M)

--4780-- memcheck: SMs: max_non_DSМ = 9 (144k, 0M)

--4780-- memcheck: max sec V bit nodes: 0 (0k, 0M)

--4780-- memcheck: set_sec_vbits8 calls: 0 (new: 0, updates: 0)

--4780-- memcheck: max shadow mem size: 448k, 0M

--4780-- translate: fast SP updates identified: 1,456 ( 90.3%)

--4780-- translate: generic_known SP updates identified: 79 ( 4.9%)

--4780-- translate: generic_unknown SP updates identified: 76 ( 4.7%)

--4780-- tt/tc: 3,341 tt lookups requiring 3,360 probes

--4780-- tt/tc: 3,341 fast-cache updates, 3 flushes

--4780-- transtab: new 1,553 (33,037 -> 538,097; ratio 162:10) [0 scs]

--4780-- transtab: dumped 0 (0 -> ??)

--4780-- transtab: discarded 6 (143 -> ??)

--4780-- scheduler: 21,623 jumps (bb entries).

--4780-- scheduler: 0/1,828 major/minor sched events.

--4780-- sanity: 1 cheap, 1 expensive checks.

--4780-- exectx: 30,011 lists, 6 contexts (avq 0 per list)

--4780-- exectx: 6 searches, 0 full compares (0 per 1000)

--4780-- exectx: 0 cmp2, 4 cmp4, 0 cmpAll $

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

У программы valgrindесть много опций, включая подавление ошибок определенного типа и обнаружение утечки памяти. Для выявления такой утечки в примере вы должны использовать одну из опций, передаваемых valgrind. Для контроля утечек памяти после завершения программы следует задать опцию --leak-check=yes. Список опций можно получить с помощью команды valgrind --help.

Как это работает

Программа выполняется под контролем средства valgrind, которое перехватывает действия, совершаемые программой, и выполняет множество проверок, включая обращения к памяти. Если обращение относится к выделенному блоку памяти и некорректно, valgrind выводит сообщение. В конце программы выполняется подпрограмма "сбора мусора", которая определяет, есть ли выделенные и неосвобожденные блоки памяти. Об этих потерянных блоках выводится сообщение.

Резюме

В этой главе обсуждались некоторые методы и средства отладки. Система Linux предоставляет ряд мощных инструментов для удаления ошибок из ваших программ. Вы устранили несколько ошибок в программе с помощью отладчика gdbи познакомились с некоторыми средствами статического анализа, такими как cflowи splint. В заключение были рассмотрены проблемы, возникающие при использовании динамически распределяемой памяти, и некоторые средства, способные помочь обнаружить их, например ElectricFence и valgrind.

Утилиты, обсуждавшиеся в этой главе, в основном хранятся на FTP-серверах в Интернете. Авторы, имеющие к ним отношение, могут порой сохранять авторские права на них. Информацию о многих утилитах можно найти в архиве Linux, по адресу http://www.ibiblio.org/pub/Linux.Мы надеемся, что новые версии будут появляться на этом Web-сайте по мере их выхода в свет.

Глава 11

Процессы и сигналы

Процессы и сигналы формируют главную часть операционной среды Linux. Они управляют почти всеми видами деятельности ОС Linux и UNIX-подобных компьютерных систем. Понимание того, как Linux и UNIX управляют процессами, сослужит добрую службу системным и прикладным программистам или системным администраторам.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Основы программирования в Linux»

Представляем Вашему вниманию похожие книги на «Основы программирования в Linux» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Основы программирования в Linux»

Обсуждение, отзывы о книге «Основы программирования в Linux» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x