Ik heb wat verduidelijking nodig over hoe GDB werkt in de IDE-omgeving op cloud9
Zijn er twee verschillende soorten debuggers die de IDE omgeving?
-
Debugger, via
debug
commando-invoer die kijkt of stap voor stap compilatie / invoer wordt gecontroleerd? (voor bronbestand) -
GDB, dat het uitvoerbare programma controleert?
Ook, hoe geef je argumenten door in GDB? Ik kom hier niet uit.
Ik kijk naar pset4 en wil GDB uitvoeren op de uitvoerbare “kopie” en een invoer- en uitvoerbestandsnaam doorgeven
hoe zou ik dat doen in de terminal
EDIT
ook mijn debugger is ook altijd kapot
Antwoord
Gebruik de parameter –args om GDB met argumenten in de terminal uit te voeren.
gdb --args name arg1 arg2 arg3
debug50 (de grafische debugger) is gewoon GDB met een GUI. GDB is oorspronkelijk ontworpen om via de terminal te worden uitgevoerd, en is dat nog steeds. Het is veel flexibeler dan welke grafische debugger dan ook.
- Hier “is een complete naslaggids voor GDB: https://sourceware.org/gdb/current/onlinedocs/gdb/
- En hier “een spiekbriefje dat ik heb gevonden: https://cs.brown.edu/courses/cs033/docs/guides/gdb.pdf
Hier volgen echter enkele basisprincipes:
- Stap-voor-stap foutopsporing:
next (or n)
-
Het instellen van een breekpunt wordt gedaan met
break (or b) [function or line number]
, bijvoorbeeld:break main
ofbreak 20
waarbij “20” de regel is die moet worden afgebroken. -
Start het programma met
run (or r)
. -
Gebruik
continue or c
om naar het volgende breekpunt te gaan. -
Om een variabele binnen GDB af te drukken (niet met
printf()
) typ jeprint varname
.
Als alternatief, nu u een paar commandos kent, kunt u uw programma met enkele argumenten uitvoeren met [r]un arg1 arg2 arg3
.
Wat betreft uw problemen met debug50, het spijt me te moeten zeggen dat de voorganger van debug50 kapot was en het lijkt erop dat debug50 nu ook kapot is. Ik heb het in ieder geval nooit kunnen repareren.
Reacties
- bedankt voor het zeer diepgaande antwoord !. Nog een andere vraag, is GDB voorgeïnstalleerd in sommige Linux Bash-omgevingen en misschien de Windows-opdrachtprompt?
- GDB is voor zover ik weet voorgeïnstalleerd in elke Linux-distributie, en zeker in de meest populaire (arch, debian, ubuntu , enz..). Om het op Windows te krijgen, moet je misschien Cygwin of MinGW gebruiken (verzamelingen Linux / GNU / POSIX-tools en dergelijke), ik weet niet ' of de " officiële " download op de GDB-downloadpagina gnu.org/software/gdb ondersteunt eigenlijk windows, ik heb ' niet geprobeerd.