8 der besten Linux-Debugger für Software-Ingenieure

Charset=invalidcharsetid 48

Debugger sind unverzichtbar, um Fehler in Programmen zu finden. Sie erledigen die Vorarbeit, um Probleme in Ihrem Code zu lokalisieren, bevor es Zeit ist, ihn zu kompilieren, und liefern in der Regel mehr Informationen als der Compiler selbst. Linux, als primär Open-Source-Ökosystem, bietet eine Vielzahl dieser Anwendungen, die in mehreren verschiedenen Programmiersprachen und auf verschiedenen Verarbeitungsarchitekturen funktionieren. In diesem Leitfaden tauchen wir direkt in die Welt der Linux-Debugger ein.

Inhaltsverzeichnis

    1. GNU Debugger (GDB)
    1. Data Display Debugger (DDD)
    1. LLDB
    1. Delve
    1. Xdebug
    1. KDbg
    1. Valgrind
    1. strace

1. GNU Debugger (GDB)

Der GNU Debugger, auch bekannt als GDB, ist einer der leistungsstärksten Linux-Debugger, die modernen Programmierern zur Verfügung stehen. Er ist ein robustes Tool mit einem umfangreichen Funktionsumfang. GDB unterstützt viele beliebte Programmiersprachen, darunter C, C++, Go und Rust. Er funktioniert auch auf vielen verschiedenen CPU-Architekturen, wie x86, x86-64, ARM, PowerPC, SPARC und MIPS.

Demonstration von GDB, das ein Testprogramm ausführt

Installieren Sie GDB mit diesen Befehlen:

In Ubuntu/Debian-basierten Distributionen:

sudo apt installgdb

In Fedora/RHEL-Distributionen:

sudo dnf installgdb

In Arch-basierten Distributionen:

sudo pacman -Sgdb

Solange Sie mit GCC mit Debug-Symbolen kompilieren, können Sie die Anweisungen eines Programms Schritt für Schritt durchgehen, indem Sie s eingeben. Durch Eingabe von r wird Ihr Programm durch den Debugger ausgeführt. Um GDB mit dem geladenen Programm zu starten, geben Sie einfach gdb in Ihrem Terminal gefolgt von dem Programmpfad ein.

Sobald Sie drinnen sind, zeigt die Eingabe von help einen gut organisierten Katalog, der alles erklärt, was Sie mit diesem mächtigen Debugger tun können!

2. Data Display Debugger (DDD)

Wenn es Ihnen nicht liegt, mit Befehlen zu fummeln, Sie aber dennoch die Funktionen von GDB lieben, bietet DDD eine einfache grafische Benutzeroberfläche, die alle Funktionen in einer Point-and-Click-Oberfläche bereitstellt. Es ist die klassische Linux-Debugger-GUI.

DDD führt ein einfaches Programm aus und beendet es.

Die Benutzeroberfläche mag etwas minimalistisch aussehen, ist aber in jeder Hinsicht so leistungsfähig wie jeder andere Debugger. Der Unterschied besteht darin, dass Sie den charakteristischen Debugger von GNU mit einer grafischen Schnittstelle erhalten!

Um es zu installieren:

In Ubuntu/Debian-basierten Distributionen:

sudo apt installddd

In Fedora/RHEL-Distributionen:

sudo dnf installddd

In Arch-basierten Distributionen:

yay -Sddd

Alles, was auf Arch basiert, muss einen AUR-Helper verwenden, da DDD in den offiziellen Repositories nicht existiert. Alternativ können Sie DDD auf einem Arch-basierten System ohne AUR-Helper installieren:

sudo pacman -S --needed base-devel  
git clone https://aur.archlinux.org/ddd.git  
cd ddd  
makepkg -si

3. LLDB

LLDB ist Teil des LLVM-Projekts. Die LLVM-Suite hat an Popularität gewonnen, dank ihres effizienten Workflows. Es ist auch der Standard-Debugger für Xcode und Android Studio von macOS geworden. Einige der Hauptmerkmale von LLDB umfassen die Unterstützung für verschiedene Compiler-Integration und Remote-Debugging. Es unterstützt die C-Sprachen (C, C++ und Objective-C).

Linux-Debugger Lldb

Für diejenigen, die bereits mit grundlegenden GDB-Befehlen vertraut sind, wird LLDB vertraut erscheinen. Die Eingabe von run oder r startet das Programm, und die Eingabe von step oder s führt durch die Unterroutinen.

Um es zu installieren:

In Ubuntu/Debian-basierten Distributionen:

sudo apt install lldb

In Fedora/RHEL-Distributionen:

sudo dnf install lldb

In Arch-basierten Distributionen:

sudo pacman -S lldb

4. Delve

Delve ist ein einfacher, aber funktionsreicher Linux-Debugger für die Programmiersprache Go von Google. Sie können ihn verwenden, um in der Laufzeit mit Ihrem Programm zu interagieren und Dinge wie Goroutinen und Stacks zu manipulieren. Der Debugger selbst ist in Go geschrieben, wodurch er eine Laufzeit in der gleichen Umgebung wie das getestete Programm bietet.

Delve funktioniert nach dem gleichen Prinzip wie GDB und LLDB, nur dass es eine einzigartige Befehlsmenge hat, die sich stark von den beiden anderen unterscheidet. Geben Sie einfach help ein, sobald Sie drinnen sind, und Sie erhalten eine vollständige Liste aller Debug-Optionen, die es Ihnen bietet.

Im Gegensatz zu allgemeineren Debuggern für mehrere Sprachen bietet Delve spezifischere Go-Befehle, mit denen Sie in Ihrer Anwendung auf granularer Ebene während der Ausführung nachschauen können.

Delve verwenden, um spezifische Go-Routinen und Threads zu betrachten.

Um es zu installieren:

In Ubuntu/Debian-basierten Distributionen:

sudo apt install delve

In Fedora/RHEL-Distributionen:

sudo dnf install delve

In Arch-basierten Distributionen:

sudo pacman -S delve

5. Xdebug

Während die meisten Leute lernen, ihre Variablen (in PHP-Communities als „dump & die“ bekannt) anzuzeigen, um herauszufinden, was mit einem bestimmten Aspekt ihres Codes nicht stimmt, gibt es Zeiten, in denen Sie etwas Robusteres benötigen, das Sie durch alle Ihre Routinen führt. Xdebug bietet dies in Hülle und Fülle für angehende und erfahrene PHP-Programmierer.

Es ist ein Linux-Debugger, der Zeile für Zeile durch PHP-Code geht und genau zeigt, was passiert, während eine Webseite verarbeitet wird. Xdebug funktioniert auch auf mehreren IDEs, einschließlich VSCode. Weitere Funktionen umfassen einen leistungsstarken Profiler, Stack-Tracer und die Möglichkeit, das vollständige Ausführungssegment anzuzeigen.

Um Xdebug zu installieren:

In Ubuntu/Debian-basierten Distributionen:

sudo apt install php-xdebug

In Fedora/RHEL-Distributionen:

sudo dnf install php-xdebug

In Arch-basierten Distributionen:

sudo pacman -S xdebug

6. KDbg

KDbg ist ein GUI-Debugger für die KDE-Desktopumgebung. Da er wie DDD als GDB-Frontend fungiert, erhalten Sie alle Funktionen von GDB zusammen mit einer intuitiven Benutzeroberfläche. Erfahrener Programmierer werden sicherlich eine klare Ansicht aller Variablen zu schätzen wissen, während sie durch ihren Code gehen, sowie ein vollständig gewidmetes Panel, das zeigt, was jeder CPU-Register enthält. Dies ist in keinem der hier behandelten anderen Debugger so einfach zu visualisieren.

Aufgrund dessen ist KDbg eine fantastische Wahl für traditionelle native Anwendungsprogrammierer, von den Neulingen, die gerade anfangen zu lernen, bis hin zu den erfahrensten Veteranen.

KDbg debuggt ein laufendes Programm, das in C geschrieben wurde.

Um KDbg zu installieren:

In Ubuntu/Debian-basierten Distributionen:

sudo apt install kdbg

In Fedora/RHEL-Distributionen:

sudo dnf install kdbg

In Arch-basierten Distributionen:

sudo pacman -S kdbg

Hinweis: Wenn Sie eine Ubuntu- oder Debian-basierte Distribution verwenden und das Paket für kdbg in den offiziellen Repositories nicht finden, geben Sie genau das ein, um es selbst zu erstellen:

sudo apt install build-essential cmake extra-cmake-modules qtbase5-dev libkf5i18n-dev libkf5iconthemes-dev libkf5xmlgui-dev  
git clone -b maint https://github.com/j6t/kdbg.git  
cd kdbg  
cmake .  
make  
sudomakeinstall

7. Valgrind

Valgrind ist ein robuster Speicher-Debugger, der viele zusätzliche Tools zur Softwareanalyse anbietet. Er läuft sowohl auf Linux als auch auf Mac. Darüber hinaus können Sie ihn als Framework verwenden und dynamische Analysetools wie Profiler erstellen. Insgesamt ist Valgrind eine ausgezeichnete Wahl für Fachleute aufgrund seines reichen Funktionsumfangs und der Vielzahl an Tools, die den Speicher eines Programms während der Ausführung überwachen.

Valgrind erkennt einen Speicherleck in einem Programm.

Um Valgrind zu installieren:

In Ubuntu/Debian-basierten Distributionen:

sudo apt installvalgrind

In Fedora/RHEL-Distributionen:

sudo dnf installvalgrind

In Arch-basierten Distributionen:

sudo pacman -Svalgrind

8. strace

strace ist ein Benutzerdienstprogramm für Unix, das es Benutzern ermöglicht, Systemaufrufe und Signale direkt über das Terminal zu protokollieren.

Linux-Debugger Strace

Programmierer können es verwenden, um Stack-Traces anzuzeigen, Systemaufrufe zu filtern, Rückgabewerte zu ändern, Dateideskriptoren zu extrahieren und vieles mehr.

Wichtiger ist, dass strace Ihnen ermöglicht, sich an laufende Programme anzuhängen. Dadurch können Sie unter die Fingernägel jeder Software, die Sie auf Ihrem Rechner ausführen, gelangen, um mehr darüber zu erfahren, was einen Absturz verursachen könnte.

Um strace zu installieren:

In Ubuntu/Debian-basierten Distributionen:

sudo apt installstrace

In Fedora/RHEL-Distributionen:

sudo dnf installstrace

In Arch-basierten Distributionen:

sudo pacman -Sstrace

Das Arsenal wartet

Mit diesen Tools können Sie Ihren Code auf Arten untersuchen, die zuvor möglicherweise unerreichbar schienen. Es kann eine gewisse Lernkurve geben, aber es ist die Mühe wert. Wenn Sie es ernst meinen mit der Programmierung in Linux, wird Lernen, wie man seine Debugger verwendet, Ihnen langfristig viel Zeit sparen.

Jetzt, da Sie die besten Linux-Debugger haben, ist es an der Zeit, die besten Linux-Distributionen für Entwickler und Programmierer zu finden.