Майкл Джонсон - Разработка приложений в среде Linux. Второе издание

Тут можно читать онлайн Майкл Джонсон - Разработка приложений в среде Linux. Второе издание - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-osnet, издательство Вильямс, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Разработка приложений в среде Linux. Второе издание
  • Автор:
  • Жанр:
  • Издательство:
    Вильямс
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    978-5-8459-1143-8
  • Рейтинг:
    3.8/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Майкл Джонсон - Разработка приложений в среде Linux. Второе издание краткое содержание

Разработка приложений в среде Linux. Второе издание - описание и краткое содержание, автор Майкл Джонсон, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет собой отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из других операционных систем. Подробно рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование свободно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Изобилие хорошо документированных примеров кода помогает лучше усвоить особенности программирования в Linux.

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

Разработка приложений в среде Linux. Второе издание - читать онлайн бесплатно полную версию (весь текст целиком)

Разработка приложений в среде Linux. Второе издание - читать книгу онлайн бесплатно, автор Майкл Джонсон
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

$ mprleak mpr.log | mpr map -l ./broken

m:broken(broken.c,20): main(broken.c,47):5:134518624

7.4. Обнаружение ошибок памяти с помощью Valgrind

Valgrind (http://valgrind.kde.org/) представляет собой специфический для Intel х86 инструмент, эмулирующий центральный процессор класса х86 для непосредственного наблюдения над всеми обращениями к памяти и анализа потока данных (он может, например, выявлять чтения неинициализированной памяти, тем не менее перенос содержимого неинициализированной ячейки в другую ячейку, которая никогда для читается, как неинициализированное чтение он не трактует). Valgrind обладает множеством других возможностей, включая просмотр использования кэша и поиск состязаний в многопоточных программах. В действительности, в Valgrind имеется универсальное средство для добавления большего количества возможностей, основанных на его эмуляторе центрального процессора. Однако для наших целей мы лишь кратко рассмотрим выполнение с его помощью агрессивного поиска ошибок памяти, что представляет его стандартное поведение.

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

$ valgrind ./broken

==30882== Memcheck, a.k.a. Valgrind, a Memory ERROR detector for x86-linux.

==30882== Copyright (C) 2002-2003, and GNU GPL'd, by Julian Seward.

==30882== Using valgrind-2.0.0, a program super vision framewok for x86-linux.

==30882== Copyright (C) 2000-2003, and GNU GPL'd, by Julian Seward.

==30882== Estimated CPU clock rate is 1547 MHz

==30882== For more details, rerun with: -v

==30882==

==30882== Invalid write of size 1

==30882== Недопустимая запись размером 1

==30882== at 0xC030DB: strcpy (mac_replace_strmem.с:174)

==30882== by 0x8048409: broken (broken.с:15)

==30882== by 0x804851F: main (broken.с:47)

==30882== by 0x802BAE: libc_start_main (in /lib/libc-2.3.2.so)

==30882== Address 0x650F029 is 0 bytes after a block of size 5 alloc'd

==30882== at 0xC0C28B: malloc (vg_replace_malloc.с:153)

==30882== by 0x80483F3: broken (broken.с:14)

==30882== by 0x804851F: main (broken.с:47)

==30882== by 0x802BAE: libc_start_main (in /lib/libc-2.3.2.so)

==30882==

==30882== Conditional jump or move depends on uninitialised value(s)

==30882== Условный переход или перемещение зависит от

неинициализироваиного значения(й)

==30882== at 0x863D8E: __GI_strlen (in /lib/libc-2.3.2.so)

==30882== by 0x83BC31: _IO_printf (in /lib/libc-2.3.2.so)

==30882== by 0x804841C: broken (broken.с:16)

==30882== by 0x804851F: main (broken.с:47)

1: 12345

==30882==

==30882== Invalid write of size 1

==30882== at 0xC030D0: strcpy (mac_replace_.с: 173)

==30882== by 0x804844D: broken (broken.с:21)

==30882== by 0x804851F: main (broken.с:47)

==30882== by 0x802BAE: _libc_start_main (in /lib/libc-2.3.2.so)

==30882== Address 0x650F061 is 0 bytes after a block of size 5 alloc'd

==30882== at 0xC0C28B: malloc (vg_replace_ malloc.с:153)

==30882== by 0x8048437: broken (broken.с:20)

==30882== by 0x804851F: main (broken.с:47)

==30882== by 0x802BAE: libc_start_main (in /lib/libc-2.3.2.so)

==30882==

==30882== Invalid write of size 1

==30882== at 0xC030DB: strcpy (mac_replace_strmem.с:174)

==30882== by 0x804844D: broken (broken.с:21)

==30882== by 0x804851F: main (broken.с:47)

==30882== by 0x802BAE: libc_start_main (in /lib/libc-2.3.2.so)

==30882== Address 0x650F064 is 3 bytes after a block of size 5 alloc'd

==30882== at 0xC0C28B: malloc (vg_replace_malloc.с:153)

==30882== by 0x8048437: broken (broken.с:20)

==30882== by 0x804851F: main (broken.с:47)

==30882== by 0x802BAE: __libc_start_main (in /lib/libc-2.3.2.so)

==30882==

==30882== Invalid read of size 4

==30882== Недопустимое чтение размером 4

==30882== at 0x863D50: __GI_strlen (in /lib/libc-2.3.2.so)

==30882== by 0x83BC31: _IO_printf (in /lib/libc-2.3.2.so)

==30882== by 0x8048460: broken (broken.с:22)

==30882== by 0x804851F: main (broken.с:47)

==30882== Address 0x650F064 is 3 bytes after a block of size 5 alloc'd

==30882== at 0xC0C28B: malloc (vg_replace_malloc.с:153)

==30882== by 0x8048437: broken (broken.с:20)

==30882== by 0x804851F: main (broken.с:47)

==30882== by 0x802BAE: __libc_start_main (in /lib/libc-2.3.2.so)

==30882==

==30882== Invalid read of size 1

==30882== at 0x857A21: _IO_file_xsputn@@GLIBC_2.1 (in /lib/libc-2.3.2.so)

==30882== by 0x835309: _IO_vfprintf_internal (in /lib/libc-2.3.2.so)

==30882== by 0x83BC31: _IO_printf(in /lib/libc-2.3.2.so)

==30882== by 0x8048460: broken (broken.с:22)

==30882== Address 0x650F063 is 2 bytes after a block of size 5 alloc'd

==30882== at 0xC0C28B: malloc (vg_replace_malloc.с:153)

==30882== by 0x8048437: broken (broken.с:20)

==30882== by 0x804851F: main (broken.c:47)

==30882== by 0x802BAE: __libc_start_main (in /lib/libc-2.3.2.so)

==30882==

==30882== Invalid read of size 1

==30882== at 0x857910: _IO_file_xsputn@@GLIBC_2.1 (in /lib/libc-2.3.2.so)

==30882== by 0x835309: _IO_vfprintf_internal (in /lib/libc-2.3.2.so)

==30882== by 0x83BC31: _IO_printf (in /lib/libc-2.3.2.so)

==30882== by 0x8048460: broken (broken.с:22)

==30882== Address 0x650F061 is 0 bytes after a block of size 5'alloc'd

==30882== at 0xC0C28B: malloc (vg_replace_malloc.с:153)

==30882== by 0x8048437: broken (broken.с:20)

==30882== by 0x804851F: main (broken.с:47)

==30882== by 0x802BAE: __libc_start_main (in /lib/libc-2.3.2.so)

2: 12345678

==30882==

==30882== Invalid write of size 1

==30882== at 0x8048468: broken (broken.с:25)

==30882== by 0x804851F: main (broken.с:47)

==30882== by 0x802BAE: __libc_start_main (in /lib/libc-2.3.2.so)

==30882== by 0x8048354: (within /usr/src/d/lad2/code/broken)

==30882== Address 0x650F05B is 1 bytes before a block of size 5 alloc'd

==30882== at 0xC0C28B: malloc (vg_replace_malloc.c:153)

==30882== by 0x8048437: broken (broken.с:20)

==30882== by 0x804851F: main (broken.с:47)

==30882== by 0x802BAE: __libc_start_main (in /lib/libc-2.3.2.so)

==30882==

==30882== Invalid read of size 4

==30882== at 0x863D50: __GI_strlen (in /lib/libc-2.3.2.so)

==30882== by 0x83BC31: _IO_printf (in /lib/libc-2.3.2.so)

==30882== by 0x804847A: broken (broken.c:2 6)

==30882== by 0x804851F: main (broken.c:47)

==30882== Address 0x650F064 is 3 bytes after a block of size 5 alloc'd

==30882== at 0xC0C28B: malloc (vg_replace_malloc.c:153)

==30882== by 0x8048437: broken (broken.с:20)

==30882== by 0x804851F: main (broken.c:47)

==30882== by 0x802BAE: __libc_start_main (in /lib/libc-2.3.2.so)

==30882==

==30882== Invalid read of size 1

==30882== at 0x857A21: _IO_file_xsputn@@GLIBC_2.1 (in /lib/libc-2.3.2.so)

==30882== by 0x835309: _IO_vfprintf_internal (in /lib/libc-2.3.2.so)

==30882== by 0x83BC31: _IO_printf (in /lib/libc-2.3.2.so)

==30882== by 0x804847A: broken (broken.c:2 6)

==30882== Address 0x650F063 is 2 bytes after a block of size 5 alloc'd

==30882== at 0xC0C28B: malloc (vg_replace_malloc.c:153)

==30882== by 0x8048437: broken (broken.с:20)

==30882== by 0x804851F: main (broken.с:47)

==30882== by 0x802BAE: __libc_start_main (in /lib/libc-2.3.2.so)

==30882==

==30882== Invalid read of size 1

==30882== at 0x857910: _IO_file_xsputn@@GLIBC_2.1 (in /lib/libc-2.3.2.so)

==30882== by 0x835309: _IO_vfprintf_internal (in /lib/libc-2.3.2.so)

==30882== by 0x83BC31: _IO_printf (in /lib/libc-2.3.2.so) ==30882== by 0x804847A: broken (broken.c:2 6)

==30882== Address 0x650F061 is 0 bytes after a block of size 5 alloc'd

==30882== at 0xC0C28B: malloc (vg_replace_malloc.с:153)

==30882== by 0x8048437: broken (broken.с:20)

==30882== by 0x804851F: main (broken.с:47)

==30882== by 0x802BAE: __libc_start_main (in /lib/libc-2.3.2.so)

3: 12345678

4: 12345

==30882==

==30882== Invalid write of size 1

==30882== at 0x80484A6; broken (broken.c:3 2)

==30882== by 0x804851F: main (broken.с:47)

==30882== by 0x802BAE: __libc_start_main (in /lib/libc-2.3.2.so)

==30882== by 0x8048354: (within /usr/src/d/lad2/code/broken)

==30882== Address 0xBFF2D0FF is just below %esp. Possibly a bug in GCC/G++

==30882== v 2.96 or 3.0.X. To suppress, use: --workaround-gcc 296-bugs = yes

5: 12345

6: 12345

7: 12345

==30882==

==30882== ERROR SUMMARY: 22 ERRORS from 12 contexts (suppressed: 0 from 0)

==30882== malloc/free: in use at exit: 5 bytes in 1 blocks.

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

Интервал:

Закладка:

Сделать


Майкл Джонсон читать все книги автора по порядку

Майкл Джонсон - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Разработка приложений в среде Linux. Второе издание отзывы


Отзывы читателей о книге Разработка приложений в среде Linux. Второе издание, автор: Майкл Джонсон. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x