Ich benötige einige Erläuterungen zur Funktionsweise von GDB in der IDE-Umgebung in Cloud9
Gibt es zwei verschiedene Arten von Debuggern als die IDE? Umgebung?
-
Debugger über
debug
Befehlseingabe, die aussieht, werden Eingaben Schritt für Schritt kompiliert / überprüft? (für Quelldatei) -
GDB, die das ausführbare Programm überprüft?
Wie übergeben Sie Argumente? GDB? Ich kann das anscheinend nicht herausfinden.
Ich schaue auf pset4 und möchte GDB auf der ausführbaren „Kopie“ ausführen und einen Eingabe- und einen Ausgabedateinamen
Wie würde ich das im Terminal machen?
BEARBEITEN
auch meine Der Debugger ist immer ebenfalls defekt.
Antwort
Um GDB mit Argumenten im Terminal auszuführen, verwenden Sie den Parameter –args.
gdb --args name arg1 arg2 arg3
debug50 (der grafische Debugger) ist nur GDB mit einer GUI. GDB wurde ursprünglich für den Betrieb über das Terminal entwickelt und ist es auch heute noch. Es ist viel flexibler als jeder grafische Debugger.
- Hier ist ein vollständiges Referenzhandbuch für GDB: https://sourceware.org/gdb/current/onlinedocs/gdb/
- Und hier „ein Spickzettel, den ich gefunden habe: https://cs.brown.edu/courses/cs033/docs/guides/gdb.pdf
Hier sind jedoch einige Grundlagen:
- Schrittweises Debuggen:
next (or n)
-
Das Festlegen eines Haltepunkts erfolgt mit
break (or b) [function or line number]
, zum Beispiel:break main
oderbreak 20
wobei „20“ die zu unterbrechende Zeile ist. -
Führen Sie das Programm mit
run (or r)
. -
Verwenden Sie
continue or c
, um zum nächsten Haltepunkt zu springen. -
Um eine Variable in GDB zu drucken (ohne
printf()
), geben Sieprint varname
ein.
Alternativ können Sie, nachdem Sie einige Befehle kennen, Ihr Programm mit einigen Argumenten mit [r]un arg1 arg2 arg3
ausführen.
Wie für Ihre Probleme mit debug50, es tut mir leid zu sagen, dass der Vorgänger von debug50 kaputt war und es sieht so aus, als ob debug50 jetzt auch kaputt ist. Ich habe es zumindest nie geschafft, das Problem zu beheben.
Kommentare
- Danke für die sehr ausführliche Antwort!. Eine weitere Frage ist, ob GDB in einigen Linux-Bash-Umgebungen und möglicherweise in der Windows-Eingabeaufforderung vorinstalliert ist.
- GDB ist meines Wissens in jeder Linux-Distribution vorinstalliert und sicherlich in der beliebtesten (arch, debian, ubuntu) , usw..). Um es unter Windows zu bekommen, müssen Sie möglicherweise Cygwin oder MinGW (Sammlungen von Linux / GNU / POSIX-Tools und -Dingen) verwenden. ' weiß nicht, ob die " offizieller " Download auf der GDB-Download-Seite gnu.org/software/gdb unterstützt tatsächlich Windows habe ich ' nicht versucht.