Seite wählen

NETWAYS Blog

Memory-Leaks mit Valgrind finden

Wer in C Programme schreibt, weiss, wie schwierig es ist, per malloc() angeforderten Speicher wieder freizugeben. Allzu leicht vergisst man den entsprechenden free()-Aufruf, was dann zu Memory Leaks führt.
Solche Fehler per Hand zu finden, ist je nach Komplexität des Programms sehr schwierig. Glücklicherweise gibt es eine Reihe von Tools, die bei der Suche von Memory Leaks helfen.
Eines dieser Tools ist Valgrind. Neben Memory Leaks kann es auch eine ganze Reihe anderer Fehler finden (z.B. Buffer Overflows, Benutzung von nicht-initialisiertem Speicher, Benutzung von Speicher, nachdem dieser per free() wieder freigegeben wurde, und vieles mehr).
mehr lesen…

Statische Code-Analyse mit Clang

Clang ist ein Compiler für C und C++, der als Teil des LLVM-Projekts erhältlich ist. Im Vergleich zu gcc ist er um ein Vielfaches schneller und hilft Entwickler, indem er benutzerfreundliche Fehlermeldungen ausgibt (mehr dazu unter .
Zusätzlich kann er verwendet werden, um Anwendungen statisch zu analysieren. Darunter versteht man die automatische Fehlersuche anhand des Quelltexts einer Anwendung. Da die Anwendung dabei nicht ausgeführt wird (z.B. beim Debuggen mit gdb), können hierbei nicht alle Fehler gefunden werden. Trotzdem gelingt es dem „Clang Static Analyzer“ viele mögliche Fehler zu finden:

Im Gegensatz zu anderen Tools, wie z.B. Splint, erstellt Clang HTML-Reports, die den Benutzer sofort erkennen lassen, wo sich die (möglichen) Fehler befinden:

In der Dokumentation von Clang ist beschrieben, wie man den Static Analyzer verwenden kann: Im einfachsten Fall muss man lediglich „scan-build ./configure“ (für autoconf-Projekte) und „scan-build make“ aufrufen, um einen Report zu erhalten.