Das Evangelium des Debuggens von C-Programmen unter Linux – gdb
Jeder Programmierer, egal wie erfahren er ist, kann Fehler in der Software nicht vollständig vermeiden. Daher ist die Fehlersuche und -behebung zu einer der wichtigsten Aufgaben im Softwareentwicklungszyklus geworden. Während es viele Möglichkeiten gibt, Fehler zu beheben, wie z. B. Tests und Selbstüberprüfung des Codes, kann auch spezielle Debugger-Software dabei helfen, das Problem zu lokalisieren und zu beheben.
Für Programmierer, die die Programmiersprache C/C++ oder Fortran und Modula-2 zum Entwickeln von Software verwenden, gibt es ein hervorragendes Debugger-Tool – GDB – eine gute Nachricht für sie. GDB hilft Programmierern nicht nur dabei, Fehler und andere Probleme in ihrem Code einfacher zu beheben, sondern bietet auch viele nützliche Funktionen und Optionen. In diesem Artikel besprechen wir einige Grundlagen des GDB-Debuggers sowie einige der nützlichen Funktionen und Optionen, die er bietet.

Bevor wir beginnen, ist es erwähnenswert, dass alle Anweisungen und Beispiele im Artikel auf Ubuntu 14.04 LTS getestet wurden. Die Beispielcodes im Tutorial sind alle in der Sprache C geschrieben; die verwendete Shell ist Bash (4.3.11); die GDB-Version ist 7.7.1.
GDB-Debugger-Grundlagen
Laienhaft ausgedrückt: Mit GDB können Sie den internen Ablauf des Programms während der Ausführung sehen und das Problem identifizieren. Wir werden die Verwendung des GDB-Debuggers anhand eines Arbeitsbeispiels im nächsten Abschnitt besprechen, aber vorher wollen wir einige grundlegende Punkte behandeln, die Ihnen später helfen werden.
Um einen Debugger wie GDB erfolgreich nutzen zu können, müssen Sie zunächst das Programm auf eine bestimmte Weise kompilieren, damit der Compiler die vom Debugger benötigten Debugging-Informationen generiert. Wenn Sie beispielsweise Code mit dem gcc-Compiler kompilieren (den wir später in diesem Tutorial zum Kompilieren der C-Programmbeispiele verwenden werden), müssen Sie die Befehlszeilenoption -g verwenden.
Informationen zur Befehlszeilenoption -g in der Manpage des gcc-Compilers finden Sie hier.
Stellen Sie als Nächstes sicher, dass der GDB-Debugger auf Ihrem System installiert ist. Wenn es nicht installiert ist und Sie ein Debian-basiertes System (z. B. Ubuntu) verwenden, können Sie das Tool einfach mit dem folgenden Befehl installieren:
sudo apt-get install gdb
Informationen zu Installationsmethoden für andere Distributionen finden Sie hier.
Wenn Sie nun das Programm wie oben beschrieben kompiliert haben (Befehlszeilenoption gcc -g) und den GDB-Debugger installiert haben, können Sie das Programm mit dem folgenden Befehl im Debug-Modus ausführen:
gdb [可执行程序的名称]
Dadurch wird der GDB-Debugger initialisiert, aber Ihre ausführbare Datei wird noch nicht gestartet. An dieser Stelle können Sie Debugging-bezogene Einstellungen definieren. Sie können beispielsweise einen Haltepunkt in einer bestimmten Zeile oder Funktion festlegen, damit GDB die Programmausführung in dieser Zeile anhält.
Als nächstes müssen Sie zum Starten Ihres Programms den folgenden gdb-Befehl eingeben und ausführen:
run
Hier ist es erwähnenswert, dass Sie diese Parameter hier angeben können, wenn Ihr Programm einige Befehlszeilenparameter erfordert. Zum Beispiel:
run [参数]
GDB bietet viele nützliche Befehle, die beim Debuggen immer nützlich sein können. Wir werden einige dieser Befehle im nächsten Abschnitt besprechen.
GDB-Debugger-Anwendungsfall
Jetzt haben wir eine grundlegende Vorstellung von GDB und seiner Verwendung. Wenden wir also das Gelernte anhand eines Beispiels an. Hier ist ein Beispielcode:
#include int main() { int out = 0, tot = 0, cnt = 0; int val[] = {5, 54, 76, 91, 35, 27, 45, 15, 99, 0}; while(cnt printf("/n Total = [%d]/n", tot); return 0; }
Erklären Sie kurz, was dieser Code bewirkt. Rufen Sie jeden Wert im val-Array ab, weisen Sie ihn der Variablen out zu, fügen Sie dann den Wert vor tot und den Ergebniswert 0xffffffff/out hinzu und weisen Sie ihn der Variablen tot zu.
Das hier aufgetretene Problem besteht darin, dass beim Ausführen des mit diesem Code kompilierten ausführbaren Programms der folgende Fehler generiert wird:
$ ./gdb-testFloating point exception (core dumped)
Um diesen Code zu debuggen, besteht der erste Schritt darin, das Programm mit der Option -g
zu kompilieren. Der Befehl lautet wie folgt:
gcc -g -Wall gdb-test.c -o gdb-test
Als nächstes führen wir den GDB-Debugger aus und geben das ausführbare Programm zum Debuggen an. Der Befehl lautet wie folgt:
gdb ./gdb-test
Der Fehler, den ich gerade erhalten habe, ist eine Gleitkomma-Ausnahme, die, wie die meisten von Ihnen wahrscheinlich bereits wissen, durch n % x verursacht wird, wenn x 0 ist. Aus diesem Grund habe ich in Zeile 11, wo die Divisionsoperation stattfindet, einen Haltepunkt hinzugefügt. Wie folgt:
(gdb)&;break 11
Hinweis (gdb) sind die Debugger-Eingabeaufforderungsinformationen. Ich habe nur den Befehl break 11 eingegeben.
Lassen Sie GDB nun mit der Ausführung des Programms beginnen:
run
Wenn der Haltepunkt zum ersten Mal erreicht wird, zeigt GDB die folgende Ausgabe an:
Breakpoint 1, main () at gdb-test.c:11 11 tot = tot + 0xffffffff/out; (gdb)
Wie Sie sehen können, zeigt der Debugger die Codezeile an, in der sich der Haltepunkt befindet. Lassen Sie uns nun den aktuellen Wert ausdrucken. Wie folgt:
(gdb) print out $1 = 5 (gdb)
如上所示,值 5被打印出来了。这个时候一切都还是正常的。让调试器继续执行程序直到命中下一个断点,可以通过使用 c 命令来完成:
c
重复上述操作,直到 out值变为0 时。
... ... ... Breakpoint 1, main () at gdb-test.c:11 11 tot = tot + 0xffffffff/out; (gdb) print out $2 = 99 (gdb) c Continuing. Breakpoint 1, main () at gdb-test.c:11 11 tot = tot + 0xffffffff/out; (gdb) print out $3 = 0 (gdb)
现在,为了进一步确认问题,我使用 GDB 的s (或 step) 命令代替 c 命令。因为,我只想让当前程序在第 11 行之后暂停,再一步步执行,看看这个时候是否会发生崩溃。
以下是执行之后输出信息:
(gdb) s Program received signal SIGFPE, Arithmetic exception. 0x080484aa in main () at gdb-test.c:11 11 tot = tot + 0xffffffff/out;
是的,如上输出的第一行内容所示,这就是抛出异常的地方。当我再次尝试运行s 命令时,问题最终也得到了确认:
(gdb) s Program terminated with signal SIGFPE, Arithmetic exception. The program no longer exists.
通过这种方式,你就可以使用 GDB 调试你的程序。
总结
GDB 提供了很多功能供用户研究和使用,在这里,我们仅仅只介绍了很少一部分内容。通过 GDB 的手册页可以进一步了解这个工具,当你在调试代码的时候,尝试使用一下它。GDB 调试器有一定的学习难度,但是它很值得你下功夫学习。
Das obige ist der detaillierte Inhalt vonDas Evangelium des Debuggens von C-Programmen unter Linux – gdb. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Deepseek ist ein leistungsstarkes Intelligent -Such- und Analyse -Tool, das zwei Zugriffsmethoden bietet: Webversion und offizielle Website. Die Webversion ist bequem und effizient und kann ohne Installation verwendet werden. Unabhängig davon, ob Einzelpersonen oder Unternehmensnutzer, können sie massive Daten über Deepseek problemlos erhalten und analysieren, um die Arbeitseffizienz zu verbessern, die Entscheidungsfindung zu unterstützen und Innovationen zu fördern.

Es gibt viele Möglichkeiten, Deepseek zu installieren, einschließlich: kompilieren Sie von Quelle (für erfahrene Entwickler) mit vorberechtigten Paketen (für Windows -Benutzer) mit Docker -Containern (für bequem am besten, um die Kompatibilität nicht zu sorgen), unabhängig von der Methode, die Sie auswählen, bitte lesen Die offiziellen Dokumente vorbereiten sie sorgfältig und bereiten sie voll und ganz vor, um unnötige Schwierigkeiten zu vermeiden.

Bitget ist eine Kryptowährungsbörse, die eine Vielzahl von Handelsdienstleistungen anbietet, darunter Spot -Handel, Vertragshandel und Derivate. Der 2018 gegründete Austausch hat seinen Hauptsitz in Singapur und verpflichtet sich, den Benutzern eine sichere und zuverlässige Handelsplattform zu bieten. Bitget bietet eine Vielzahl von Handelspaaren, einschließlich BTC/USDT, ETH/USDT und XRP/USDT. Darüber hinaus hat der Austausch einen Ruf für Sicherheit und Liquidität und bietet eine Vielzahl von Funktionen wie Premium -Bestellarten, gehebelter Handel und Kundenunterstützung rund um die Uhr.

Ouyi Okx, die weltweit führende digitale Asset Exchange, hat jetzt ein offizielles Installationspaket gestartet, um ein sicheres und bequemes Handelserlebnis zu bieten. Auf das OKX -Installationspaket von Ouyi muss nicht über einen Browser zugegriffen werden. Der Installationsprozess ist einfach und einfach zu verstehen.

Gate.io ist ein beliebter Kryptowährungsaustausch, den Benutzer verwenden können, indem sie sein Installationspaket herunterladen und auf ihren Geräten installieren. Die Schritte zum Abholen des Installationspakets sind wie folgt: Besuchen Sie die offizielle Website von Gate.io, klicken Sie auf "Download", wählen Sie das entsprechende Betriebssystem (Windows, Mac oder Linux) und laden Sie das Installationspaket auf Ihren Computer herunter. Es wird empfohlen, die Antiviren -Software oder -Firewall während der Installation vorübergehend zu deaktivieren, um eine reibungslose Installation zu gewährleisten. Nach Abschluss muss der Benutzer ein Gate.io -Konto erstellen, um es zu verwenden.

Ouyi, auch bekannt als OKX, ist eine weltweit führende Kryptowährungsplattform. Der Artikel enthält ein Download -Portal für das offizielle Installationspaket von Ouyi, mit dem Benutzer den Ouyi -Client auf verschiedenen Geräten installiert werden können. Dieses Installationspaket unterstützt Windows, Mac, Android und iOS -Systeme. Nach Abschluss der Installation können sich Benutzer registrieren oder sich beim Ouyi -Konto anmelden, Kryptowährungen mit dem Handel mit den von der Plattform erbrachten Diensten anmelden.

Gate.io ist eine hochgelobte Kryptowährungshandelsplattform, die für ihre umfangreiche Token-Auswahl, niedrige Transaktionsgebühren und eine benutzerfreundliche Schnittstelle bekannt ist. Mit seinen fortschrittlichen Sicherheitsfunktionen und dem hervorragenden Kundenservice bietet Gate.io Händlern ein zuverlässiges und bequemes Handelsumfeld für Kryptowährung. Wenn Sie sich mit gate.io anschließen möchten, klicken Sie bitte auf den Link zum Herunterladen des offiziellen Registrierungsinstallationspakets, um Ihre Kryptowährungshandelsreise zu starten.

Dieses Tutorial führt Sie durch die Installation und Konfiguration von Nginx und PhpMyAdmin auf einem Ubuntu -System, möglicherweise neben einem vorhandenen Apache -Server. Wir werden das Einrichten von NGINX abdecken, potenzielle Portkonflikte mit Apache auflösen, MariADB (installieren
