Wat is de GNU Debugger

Dutch French Spanish Portuguese Italian German Japanese Chinese Korean Russian Arabic Bookmark and Share this Article Original English article
  

Gdb debugger is de Free Software Foundation's. Het is een goede command-line debugger, waarop meerdere instrumenten zijn gebouwd, met inbegrip gdb Emacs 'modus, de grafische Data Display Debugger (DDD)En ingebouwde de-Buggers in verschillende grafische IDE. Wij dekken alleen gdb in dit artikel.

Begin door het uitvoeren van gdb gdb progname. Gdb zal niet zoeken in het PATH op zoek naar het uitvoerbare bestand. Gdb laadt de symbolen van de uitvoerbare en dan vraagt u om wat te doen.

Er zijn drie manieren om een proces met gdb inspecteren:

  • Gebruik de opdracht Uitvoeren het programma te starten normaal.

  • Gebruik de hechten opdracht om te beginnen met de inspectie van een reeds lopende proces. Wanneer je hechten aan een proces, zal het proces worden gestopt.

  • Inspecteer een bestaande kern-bestand naar de toestand van het proces toen het werd gedood bepalen. Om een kern bestand te inspecteren, te beginnen met het commando gdb gdb progname corefile.

Voordat u een programma uit te voeren of hechten aan een reeds lopende programma, kunt u instellen van breakpoints, lijst broncode, en doe iets anders dat niet noodzakelijkerwijs leiden tot een lopend proces.

Gdb vereist niet dat u typt gehele commando namen; r volstaat voor lopen, n voor de volgende, s voor stap. Voorts herhalen de meest recente opdracht, simpelweg hit Return. Dit maakt single-stepping eenvoudig.

Een korte selectie van nuttige gdb commando's is hier opgenomen; gdb bevat een uitgebreide online handleiding in GNU info-formaat (run info gdb) dat alle opties gdb's wordt in detail uitgelegd in een tutorial formaat. Programmeren met GNU software bevat een goede gedetailleerde tutorial over het gebruik van gdb. Gdb omvat ook uitgebreide online hulp beschikbaar vanuit gdb, toegang met de hulp commando. Specifieke hulp bij elke opdracht is verkrijgbaar met hulp commandonaam of help onderwerp.

Net als shell-commando's kunnen gdb commando argumenten nemen. We maken gebruik van "oproep te helpen met een argument van het commando" betekenen hetzelfde als "type hulp command".

Sommige commando's ook rekening gdb formaat kenmerken vast te stellen hoe om waarden af te drukken. Formaat identificatiemiddelen onmiddellijk na het commando naam en zijn gescheiden van het commando naam door een schuine streep. Zodra u een indeling hebt gekozen, hoef je niet te gebruiken elke keer dat u het commando herhalen; gdb zal herinneren het formaat dat u gekozen als standaard.

Formaat identificatiemiddelen worden gescheiden van commando's door een / karakter en zijn samengesteld uit drie elementen: een graaf, een formaat brief, en een grootte brief. De graaf en de grootte brieven zijn optioneel; rekenen standaard op 1, en de grootte is redelijk standaard gebaseerd op het formaat brief.

Het formaat letters zijn o voor octaal, x voor hexadecimaal, d voor decimaal, u voor unsigned decimal, t voor binaire, f voor floating-point, een voor het adres, i voor instructie, C voor karakter, en is voor string.

De grootte letters zijn B voor byte, h voor half woord (2 bytes), w voor woord (4 bytes), en g voor reus (8 bytes).

hechten op Hechten aan een reeds lopende proces. Het enige argument is de PID van het proces om die te bevestigen. Dit stopt de processen die u bevestigen, onderbreken geen slaap of andere onderbreekbaar systeem gesprek voert. Zie losmaken.
backtrace, BT, waar, w Druk een stack trace.
pauze b Stel een breekpunt. U kunt een functie naam, een regelnummer van het huidige bestand (het bestand met het uitvoeren van code), een filename: linenumber pair, of zelfs een willekeurig adres * adres. Gdb rechtverkrijgenden en vertelt u een uniek nummer voor elke breekpunt. Zie voorwaarde, helder, en verwijderen.
helder Duidelijke een breekpunt. Is van dezelfde argumenten als break. Zie verwijderen.
conditie Veranderingen een breekpunt bepaald door het aantal (zie pauze) om alleen als een voorwaarde waar is pauze. De conditie wordt uitgedrukt als een willekeurige expressie.
 
(gdb) b 664 Breekpunt 3 op 0x804a5c0: file ladsh4.c, lijn 664. (gdb) conditie 3 status == 0 

wissen Duidelijke een breekpunt in aantal.
losmaken Losmaken van de huidige bijgevoegde proces.
tonen Toont de waarde van een expressie elke keer stopt de uitvoering. Is van dezelfde argumenten (met inbegrip van formaat modifiers), zoals print. Drukt een weergave van het aantal dat kan later worden gebruikt om de weergave te annuleren. Zie undisplay.
help Zoek hulp. Aangeroepen met geen enkel argument, biedt een overzicht van de beschikbare hulp. Aangeroepen met een andere opdracht als argument, biedt hulp op dat commando. Uitvoerig cross-referenced.
springen Ga naar een willekeurig adres en blijven executie daar. Het adres is het enige argument, en het kan worden omschreven als een lijn nummer of als een adres opgegeven als * adres.
lijst, l Met geen enkel argument, lijst lijsten eerst de 10 regels rond het huidige adres. Latere oproepen naar de lijst lijst de volgende paragrafen van 10 lijnen. Met een argument van -, somt de vorige 10 regels.
  Met een lijn nummer, somt de 10 lijnen rond die lijn. Met een filename: linenumber pair, somt de 10 lijnen rond die lijn. Met een functie naam, somt de 10 regels rond het begin van de functie. Met een adres opgegeven als * adres, geeft de 10 regels rond de code vinden op dat adres.
  Met twee lijn specificaties gescheiden door komma's, lijsten alle lijnen tussen de twee aangegeven lijnen.
volgende, n Stap naar de volgende regel van de broncode in de huidige functie; maken functie aanroepen zonder versterking. Zie stap.
nexti Stap naar de volgende machine taal instructie; maken functie aanroepen zonder versterking. Zie stepi.
print, p Druk de waarde van een expressie in een begrijpelijke voorstelling. Als u een char * c, zal het commando Print C print het adres van de string, en afdrukken * c drukt de string zelf. Printing structuren zal uitbreiden van de structuren. U kunt afgietsels in uw uitingen, en gdb zal eren hen. Als de code is opgesteld met de optie-ggdb, opgesomde waarden en definities preprocessor zal beschikbaar zijn voor u om te gebruiken in uw uitingen. Zie display.
  De printopdracht neemt formaat identificatiemiddelen, maar met de juiste soorten en met typecasts, het formaat identificatiemiddelen zelden nodig zijn. Zie x.
lopen, r Voer het huidige programma vanaf het begin. De argumenten om de opdracht Uitvoeren zijn de argumenten die zouden worden gebruikt om het programma op de opdrachtregel uitvoeren. Gdb zal doen shell-stijl globbing met * en [], en het zal doen shell-stijl redirection met <,>, en>>, maar het niet zal doen pijpen of hier documenten.
  Met geen argumenten, voert u gebruik maakt van de argumenten die zijn opgegeven in de meest recente opdracht Uitvoeren, of in de meest recente serie args commando. Lopen zonder argumenten na het draaien met argumenten, gebruik de set args commando zonder extra argumenten.
instellen Gdb kunt u de waarden van variabelen, te wijzigen als volgt:
 
(gdb) een = argv [5] 

  Ook wanneer u een uitdrukking af te drukken, gdb geeft u een verkorte variabele, zoals $ 1, die u kunt gebruiken om te verwijzen naar het later. Dus als je eerder had argv [5 geprinte] en gdb had verteld dat het 6 dollar, kon je schrijft de vorige opdracht als
 
(gdb) een = $ 6 

  De set commando heeft ook veel subcommands, veel te veel om hier op te sommen. Gebruik helpen bij het opzetten voor meer informatie.
stap, s Stap het programma instructie instructie door totdat hij een nieuwe lijn van de broncode bereikt. Zie de volgende.
stepi Execute precies een machine taalonderwijs; sporen in functie oproepen. Nexti See.
undisplay Zonder enig argument, annuleert alle displays. Anders, annuleert de displays waarvan de nummers worden gegeven als argumenten. Zie display.
whatis Drukt de data type van een expressie gegeven als argument.
waar, w Zie backtrace.
x De x-commando is als de printopdracht, behalve dat het expliciet is beperkt tot het afdrukken van de inhoud van een adres in een willekeurig formaat. Als u niet een format identifier gebruikt, zal gdb gebruik van de meest recent opgegeven formaat identifier.
een artikel afkomstig van Humberto Mitchson


Disclaimer: Onze website is niet verantwoordelijk voor de informatie in dit artikel. In dit artikel wordt op geen enkele manier de standpunten, meningen, gedachten of overtuigingen van de artikelen directory personeel.
Vertaling aankondiging: Het artikel "Wat is de GNU Debugger" werd vertaald met behulp van een geautomatiseerde vertaling dienst. Onze excuses voor eventuele vertaalfouten die heeft plaatsgevonden. Dank u voor uw begrip.


Online: 1745 users browsing the articles directory