ltrace ist ein Bibliotheksaufruf-Tracer für Linux: Es protokolliert, welche Funktionen aus dynamischen Bibliotheken (zum Beispiel libc) ein Programm aufruft — samt Argumenten und Rückgabewerten. Damit ergänzt es strace, das nur die Systemaufrufe des Kernels zeigt.

Grundlegende Aufrufe

ltrace ./programm        # alle Bibliotheksaufrufe anzeigen
ltrace -c ./programm     # Zusammenfassung: Aufruf-Zähler und Zeitanteile
ltrace -e malloc+free ./programm  # nur bestimmte Funktionen filtern
ltrace -p <PID>           # an laufenden Prozess anhängen
ltrace -S ./programm     # zusätzlich Systemaufrufe zeigen

Praxis-Tipps

  • Der Filter -e akzeptiert Ausdrücke wie -e malloc+free oder -e 'libc:*' (alle libc-Funktionen)
  • -f verfolgt Kindprozesse, -o datei schreibt die Ausgabe in eine Datei
  • -t bzw. -tt fügen Zeitstempel hinzu, -T misst die Dauer jedes Aufrufs
  • -a Spalte richtet die Rückgabewerte an einer Spalte aus (Standard 40)

Einordnung

ltrace nutzt wie strace-Befehle die ptrace-Schnittstelle, arbeitet aber eine Ebene höher: Es zeigt die Funktionen im Userland, nicht die Syscalls. Für die Frage „welche Bibliotheksfunktion wird wie oft aufgerufen?“ ist ltrace das passende Werkzeug, während perf-Befehle die CPU-Last messen.

Verwandte Grundlagen: perf-Befehle (Performance-Profile), readelf-Befehle (ELF-Struktur).