13. Компиляторы и утилиты

13. Компиляторы и утилиты

13.1. SystemTap

SystemTap используется для наблюдения за работой операционной системы и ядра. Полученная статистика аналогична выводу утилит netstat, ps, top, iostat, но SystemTap дополнительно предоставляет инструменты для анализа результатов и создания фильтров.
В Red Hat Enterprise Linux 6 входит версия SystemTap 1.1. Новые возможности включают:
  • улучшенную проверку программ пространства пользователя;
  • проверку синтаксиса C++ в программах C++;
  • более высокий уровень защиты сервера компиляции сценариев;
  • новый непривилегированный режим, позволяющий обычным пользователям использовать SystemTap.

Важно

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

13.2. OProfile

OProfile предназначен для мониторинга производительности системы, работает в фоновом режиме и осуществляет сбор информации.
В Red Hat Enterprise Linux 6 входит обновленная версия OProfile 0.9.5, которая обеспечивает поддержку новых процессоров Intel и AMD.

13.3. GCC

Набор компиляторов GNU (GCC, GNU Compiler Collection) включает, среди прочих, компиляторы C, C++, Java и соответствующие библиотеки. В Red Hat Enterprise Linux 6 входит версия GCC 4.4, характеризуемая следующим:
  • совместимость с версией 3.0 API-интерфейса OpenMP (Open Multi-Processing);
  • дополнительные библиотеки C++ для обработки потоков OpenMP;
  • следующая реализация стандарта C++ — C++0x;
  • новые функции отслеживания переменных для улучшения отладки с использованием GDB и SystemTap;
Подробную информацию о GCC 4.4 можно найти на сайте GCC.

13.4. Библиотека glibc

Пакеты glibc содержат стандартные математические библиотеки и библиотеки C, используемые различными программами Red Hat Enterprise Linux, без которых Linux не сможет нормально работать.
В Red Hat Enterprise Linux 6 входит версия glibc 2.11. Основные особенности:
  • Улучшено динамическое выделение памяти malloc за счет выделения потокам собственного пула памяти и обхода блокирования. Размер дополнительной памяти, используемой для организации пула, контролируется с помощью переменных MALLOC_ARENA_TEST (осуществляет проверку при достижении числа пулов памяти заданного значения) и MALLOC_ARENA_MAX (задает максимальное число пулов).
  • Повышена эффективность использования условных переменных с операциями взаимоисключения (mutex) с наследованием приоритета (PI, Priority Inheritance) за счет поддержки наследования приоритета для семафоров пространства пользователя на уровне ядра.
  • Оптимизированы операции со строками на x86_64.
  • Функция getaddrinfo() теперь поддерживает протоколы DCCP (Datagram Congestion Control Protocol), UDP-Lite и может обрабатывать адреса IPv4 и IPv6 одновременно.

13.5. Отладчик GDB

GDB — отладчик проекта GNU для программ на языках C, C++ и пр. за счет их исполнения в контролируемом окружении и вывода статистики. В Red Hat Enterprise Linux 6 входит версия GDB 7.0.
Python
Обновленная версия GDB включает новый API Python, что позволяет автоматизировать работу GDB с помощью сценариев Python.
Одним из достоинств API Python является возможность форматирования вывода GDB вместо использования стандартных настроек вывода. Создание собственных сценариев обеспечивает тонкий контроль формата вывода. В состав этого выпуска Red Hat Enterprise Linux входит полный набор сценариев форматирования для библиотеки libstdc++.
Поддержка C++
Улучшена поддержка C++ в GDB. Главные усовершенствования включают:
  • многочисленные улучшения разбора выражений;
  • улучшена обработка названий типов;
  • во многих случаях исключена необходимость добавления излишних кавычек;
  • работа «next» и других команд перехода не нарушается даже при генерации исключения в тестируемой программе;
  • добавлена команда «catch syscall», которую можно использовать для остановки тестируемой программы, если она пытается выполнить системный вызов.
Отладка независимых потоков
С помощью новых параметров «set target-async» и «set non-stop» теперь можно осуществлять отладку потоков независимо друг от друга.