Threads in GDB anzeigen und zugreifen

Threads in GDB anzeigen und zugreifen
Ein anderer Name für einen Debugger wäre ein Debugging -Dienstprogramm. Durch das Erkennen der Codeprobleme in verschiedenen Phasen eines Betriebssystems oder einer Anwendungserstellung wird es als ein Computerprogramm angesehen, das den Prozess des Erstellens einer Software verbessern kann. Ein Testlauf kann von bestimmten Debuggern untersucht werden, um festzustellen, welche Codeabschnitte übersprungen wurden. Der GNU -Debugger ist eines der vielen Debugging -Tools, die für C -Programmierer verfügbar sind und das größte Debugging -Tool sind. Es bietet einige Tools, mit denen die Benutzer ein Programm ansehen und bewerten können, während es ausgeführt wird. Eine weitere hervorragende Debugging -Funktionalität besteht darin, viele Programmiersprachen wie C, C ++, ADA, Fortron und Pascal zu unterstützen. Die folgenden Funktionen sind über GDB erhältlich, wenn Sie die Multi-Thread-Anwendungen debuggen:
  • Es kann automatisch Benachrichtigungen für neu erstellte Threads senden.
  • Es bietet die Möglichkeit, den Befehl thread-no zu verwenden, um zwischen mehreren Threads zu wechseln.
  • Der Befehl „Info -Threads“ kann verwendet werden, um herauszufinden, ob aktive Threads vorhanden sind.
  • Mit dem Befehl „Thread übertragen [Threadno] [alle] Argumente“ können wir denselben Befehl an mehrere Threads (oder eine Neigung von Threads) senden.
  • Um herauszufinden, was passiert, wenn Ihr Programmcode während der Ausführung abstürzt, untersuchen Sie in Ihren C -Anwendungen.
  • Nur die Binär- oder ausführbaren Dateien, die während des Kompilierungsprozesses erstellt werden, sind mit GDB -Debugger kompatibel.

Geben Sie einfach GDB in das Terminalfenster ein, um auf das GDB Ihres Betriebssystems auf Ubuntu oder ein anderes Linux- oder Unix-basiertes Betriebssystem zuzugreifen. Der Screenshot des GDB -Befehls wird in der folgenden Abbildung angezeigt. Es zeigt die Urheberrechtsdetails der GDB. Die offene Eingabeaufforderung von GDB gibt die Informationen darüber an, wann sie bereit sind, Befehle zu akzeptieren. Bei einigen GDB -Konfigurationen, in denen das Betriebssystem die Threads aktiviert, sind diese Funktionen noch nicht zugänglich. Diese Anweisungen haben keinen Einfluss auf die GDB, die kein Fäden zulässt. Beispielsweise ignoriert ein System, dem ein Thread -Unterstützung fehlt, das Ergebnis der Abfrage „Info -Threads“ und ignoriert den Thread -Befehl konsequent.

Sie müssen nur den Befehl „Beenden“ in das GDB -Terminal eingeben, um Ihre aktuelle Sitzung von GDB zu beenden und zu beenden. Sie können die Beendigung der Anweisung des GDB -Debuggers sehen, wie im Folgenden gezeigt:

Der GDB -Debugger entwickelte viele Debugger -Befehle. Hier sind einige Beispielbefehle aufgelistet, mit denen wir versuchen können, den GDB -Debugger zu verwenden:

  1. Ausführen oder R -> Es werden die Ausführung des Programms von Anfang bis Ende abgeschlossen.
  2. Break oder B -> Es wird verwendet, um einen Haltepunkt auf eine bestimmte Zeile oder einen bestimmten Satz zu platzieren.
  3. Deaktivieren -> Es deaktiviert einen Breakpoint, der zuvor gekennzeichnet war.
  4. Aktivieren -> Es ermöglicht einen deaktivierten Haltepunkt.
  5. Weiter oder n -> Die nächste Codezeile wird ausgeführt, aber vermeiden Sie es direkt in Funktionen, in Funktionen zu gehen.
  6. Schritt -> Sie sollten mit der nächsten Anweisung fortfahren und die Funktion ausfüllen.
  7. Liste oder l -> Es wird der vollständige Code der C -Datei angezeigt.
  8. Drucken oder P -> Es wird verwendet, um den zuvor gespeicherten Wert zu drucken.
  9. Beenden Sie oder q -> Es beendet aus dem GDB -Debugger -Bildschirm.
  10. Löschen -> Es wird verwendet, um alle markierten Haltepunkte zu entfernen.
  11. Weiter -> Es wird verwendet, um die normale Ausführung des Programms fortzusetzen.

Beispiel:
Hier ist ein kleines Stück Code, das mehrere Threads verwendet, sie mit der phread_create -Methode erstellt und die Methoden der Threads übergibt. Das Beispielprogramm hat eine Main () -Funktion, die in der folgenden Abbildung zwei Threads erstellt. Es werden jetzt drei Threads ausgeführt, einschließlich des übergeordneten/originalen Main () Threads. Die Funktion main () verwendet die Funktion pThread_create (), um die Threads zu erstellen und sie nacheinander zu rufen.

Die while -Schleife wird im folgenden Code überprüft, um festzustellen. Wenn dies der Fall ist, wird die Print -Anweisung neben der Zählvariablen ausgestellt, um eine Zeichenfolge „Thread 1 läuft“ anzuzeigen. Der Thread wird unmittelbar nach der Verwendung des Befehls pThread_ join () in diesem Code verbunden.

Verwenden Sie die folgenden aufgeführten Befehle, um den Code mit dem GCC -Compiler zu kompilieren und die Aktivität des Threads mit dem BIP -Debugger anzeigen. Das folgende Bild ist ein Screenshot, der zeigt, dass der vorherige Code erfolgreich zusammengestellt wird:

GCC -G -Multithreads.c -o multithreads -lpThread

Während der Verwendung von Ubuntu 20.04 System geben Sie den folgenden Befehl auf dem Terminalbildschirm ein, um den Thread anzuzeigen und zu untersuchen.

$ gdb ./Multi-Thread

Jetzt befinden wir uns im GDB -Debugging -Modus dank des Terminalfensters. Verwenden Sie, um die Haltepunkte am Hauptpunkt zu ermitteln, den Thread zwei und den Faden drei Routinen jedes neu geformten Threads. Um einen Haltepunkt einzufügen, verwenden wir den folgenden aufgeführten Code. Es ist ein einfacher Befehl; Geben Sie einfach die Pause ein. Schreiben Sie danach den Namen der Thread -Methoden, um die Haltepunkte einzufügen. Diese Methode zeigt die Zeilennummer an, in der die Haltepunkte nach dem Eintritt hinzugefügt wurden.

Verwenden Sie zum Ausführen des Programms entweder das Schlüsselwort "Run" oder einfaches "R" als Befehl auf dem Terminalbildschirm. Ein Überblick über die Threads des Programms und einige Informationen zu ihrem gegenwärtigen Zustand werden durch die Befehlsinfo -Threads bereitgestellt, wie Sie es zur Kenntnis nehmen sollten. Bisher wurde in dieser Instanz nur ein Thread begonnen.

Die Ausführung sollte weiterhin den folgenden Befehl verwenden:

Zwei weitere Fäden beginnen an diesem Ort. Der Thread, der derzeit im Fokus steht, wird durch einen Stern bezeichnet. Zusätzlich ist der Breakpoint -fest. Verwenden Sie den Befehl, um den Fokus in einen anderen Thread zu verschieben, bevor Sie ein tatsächliches Thread -Debuggen starten. In Zeile 17 seines Funktionsthreads zwei hält Thread 2 () an.

Nach Ausgabe der „Info -Threads“ druckt zwei Thread zwei kurz die Zähler Count2 und verlässt dann den Thread 2 in Zeile 17. In ähnlicher Weise können wir den Thread „Thread_Three“ bedienen, der eine ähnliche Weise verwendet, die wir für den Thread_two verwendet haben.

Abschluss

Zusammenfassend können wir endlich den GDB -Debugger in unserem Ubuntu 20 verwenden.04 Linux -System. Dafür haben wir seine Verwendung im Einführungsabsatz erläutert und einige der Hauptfunktionen aufgeführt, die uns zur Verfügung gestellt werden und es zu einem einzigartigen Debugger machen.