Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

13. Compiler and Tools

13.1. SystemTap

SystemTap is a tracing and probing tool that allows users to study and monitor the activities of the operating system (particularly, the kernel) in fine detail. It provides information similar to the output of tools like netstat, ps, top, and iostat; however, SystemTap is designed to provide more filtering and analysis options for collected information.
Red Hat Enterprise Linux 6 features SystemTap version 1.1, which introduces many new features and enhancements, including:
  • Improved support for user-space probing.
  • Support for probing C++ programs with native C++ syntax.
  • A more secure script-compile server.
  • The new unprivileged mode, allowing non-root users to use SystemTap.

Important

Unprivileged mode is new and experimental. The stap-server facility on which it relies is undergoing work for security improvements and should be deployed with care on a trustworthy network.

13.2. OProfile

OProfile is a system-wide profiler for Linux systems. The profiling runs transparently in the background and profile data can be collected at any time.
Red Hat Enterprise Linux 6 features version 0.9.5 of OProfile, adding support for new Intel and AMD processors.

13.3. GNU Compiler Collection (GCC)

The GNU Compiler Collection (GCC) includes, among others, C, C++, and Java GNU compilers and related support libraries. Red Hat Enterprise Linux 6 features version 4.4 of GCC, which includes the following features and enhancements:
  • Conformance to version 3.0 of the Open Multi-Processing (OpenMP) application programming interface (API).
  • Additional C++ libraries to utilize OpenMP threads
  • Futher implementations of the next ISO C++ standard draft (C++0x)
  • Introduction of variable tracking assignments to improve debugging using the GNU Project Debugger (GDB) and SystemTap.
More information about the improvements implemented in GCC 4.4 is available from the GCC website.

13.4. GNU C Library (glibc)

The GNU C Library (glibc) packages contain the standard C libraries used by multiple programs on Red Hat Enterprise Linux. These packages contains the standard C and the standard math libraries. Without these two libraries, the Linux system cannot function properly.
Red Hat Enterprise Linux 6 features version 2.11 of glibc, providing many features and enhancements, including:
  • An enhanced dynamic memory allocation (malloc) behaviour enabling higher scalability across many sockets and cores. This is achieved by assigning threads their own memory pools and by avoiding locking in some situations. The amount of additional memory used for the memory pools (if any) can be controlled using the environment variables MALLOC_ARENA_TEST and MALLOC_ARENA_MAX. MALLOC_ARENA_TEST specifies that a test for the number of cores is performed once the number of memory pools reaches this value. MALLOC_ARENA_MAX sets the maximum number of memory pools used, regardless of the number of cores.
  • Improved efficiency when using condition variables (condvars) with priority inheritance (PI) mutual exclusion (mutex) operations by utilizing support in the kernel for PI fast userspace mutexes.
  • Optimized string operations on the x86_64 architecture.
  • The getaddrinfo() function now has support for the Datagram Congestion Control Protocol (DCCP) and the UDP-Lite protocol. Additionally, getaddrinfo() now has the ability to look up IPv4 and IPv6 addresses simultaneously.

13.5. GNU Project debugger (GDB)

The GNU Project debugger (normally referred to as GDB) debugs programs written in C, C++, and other languages by executing them in a controlled fashion, and then printing out their data. Red Hat Enterprise Linux 6 features version 7.0 of GDB.
Python Scripting

This updated version of GDB introduces the new Python API, allowing GDB to be automated using scripts written in the Python Programming Language.

One notable feature of the Python API is the ability to format GDB output (normally referred to as pretty-printing) using Python scripts. Previously, pretty-printing in GDB was configured using a standard set of print settings. The ability to create custom pretty-printer scripts gives the user control of the way GDB displays information for specific applications. Red Hat Enterprise Linux will ship with a complete suite of pretty-printer scripts for the GNU Standard C++ Library (libstdc++).
Enhanced C++ support

Support for the C++ programming language in GDB has been improved. Notable improvements include:

  • Many improvements to expression parsing.
  • Better handling of type names.
  • The need for extraneous quoting has nearly been eliminated
  • "next" and other stepping commands work properly even when the inferior throws an exception.
  • GDB has a new "catch syscall" command. This can be used to stop the inferior whenever it makes a system call.

Independent thread debugging

Thread execution now permits debugging threads individually and independently of each other; enabled by new settings "set target-async" and "set non-stop".