Вход/Регистрация
Основы программирования в Linux
вернуться

Мэтью Нейл

Шрифт:

– -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 и как точно установить, что делает компьютер в любой заданный момент времени. Вы также увидите, как запускать и останавливать другие процессы в ваших собственных программах, как заставить процессы отправлять и получать сообщения и как избежать процессов-зомби. В частности, вы узнаете о:

структуре процесса, его типе и планировании;

разных способах запуска новых процессов;

порождающих (родительских), порожденных (дочерних) процессах и процессах-зомби;

  • Читать дальше
  • 1
  • ...
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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