Jag behöver några förtydliganden om hur GDB fungerar i IDE-miljön på moln9
Finns det två saker olika typer av felsökare som IDE miljö?
-
Felsökare, genom
debug
kommandoeingång som ser steg för steg sammanställning / kontrollerar ingångar? (för källfil) -
GDB, som kontrollerar det körbara programmet?
Hur skickar du argument till GDB? Jag kan inte tycka att det här räknas ut.
Jag tittar på pset4 och vill köra GDB på den körbara ”kopian” och skicka in en ingång och ett utdatafilnamn
hur skulle jag göra det i terminalen
EDIT
också min debugger är alltid trasig också
Svar
För att köra GDB med argument i terminalen, använd parametern –args.
gdb --args name arg1 arg2 arg3
debug50 (den grafiska felsökaren) är bara GDB med ett GUI. GDB var ursprungligen utformad för att köras genom terminalen och är fortfarande. Det är mycket mer flexibelt än någon grafisk felsökare.
- Här ”är en komplett referensguide för GDB: https://sourceware.org/gdb/current/onlinedocs/gdb/
- Och här ”sa jag ett fuskark: https://cs.brown.edu/courses/cs033/docs/guides/gdb.pdf
Här är dock några grunder:
- Steg-för-steg-felsökning:
next (or n)
-
Att ställa in en brytpunkt görs med
break (or b) [function or line number]
, till exempel:break main
ellerbreak 20
där ”20” är raden som ska brytas. -
Kör programmet med
run (or r)
. -
Använd
continue or c
för att hoppa till nästa brytpunkt. -
För att skriva ut en variabel inuti GDB (använder inte
printf()
), skrivprint varname
.
Alternativt, nu när du känner till några kommandon, kan du köra ditt program med några argument med [r]un arg1 arg2 arg3
.
När det gäller din problem med debug50, jag är ledsen att säga att debug50s föregångare var trasig och det ser ut som att debug50 nu också är trasigt. Jag lyckades aldrig fixa det åtminstone.
Kommentarer
- tack för det mycket djupgående svaret !. Också en annan fråga, är GDB förinstallerat i vissa Linux-basmiljöer och kanske Windows-kommandotolken?
- GDB kommer förinstallerat i varje Linux-distribution så vitt jag vet, och säkert i de mest populära (arch, debian, ubuntu , etc..). För att få det till Windows kan du behöva använda Cygwin eller MinGW (samlingar av Linux / GNU / POSIX-verktyg och saker), jag vet inte ' om " officiell " nedladdning på GDB-nedladdningssidan gnu.org/software/gdb stöder faktiskt windows, jag har inte ' t försökt.