Dit is het commando dwergdump dat kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
dwarfdump - dumpt DWARF-foutopsporingsinformatie van een ELF-object
KORTE INHOUD
dwergdump [Opties] objectbestandsnaam
PRODUCTBESCHRIJVING
De dwergdump opdracht print of controleert DWERG-secties zoals gevraagd door specifieke opties.
Zonder opties (wel met de vereiste objectbestandsnaam ) alle secties worden afgedrukt (behalve sommige
secties kunnen niet zelfstandig veilig worden afgedrukt, dus die worden alleen in offset afgedrukt
waar de sectie .debug_info naar die secties verwijst).
Vanaf juni 2011 sluiten de afdrukmogelijkheden en de controlemogelijkheden elkaar uit (indien
controleopties zijn geselecteerd, de sectiedetails worden niet afgedrukt). Wanneer fouten zijn
ondervonden dwarfdump probeert voldoende context af te drukken zodat men het kan begrijpen
precies waar de fout zit in de DWERG. Deze wijziging maakt het controleren van een echt groot object
bestanden veel gemakkelijker.
Het formaat is bedoeld om leesbaar te zijn voor mensen. Als een script de uitvoer moet parseren, wordt het -d
optie is handig.
Niet alle secties bestaan daadwerkelijk in een bepaald objectbestand.
Het formaat kan van release tot release veranderen, dus het is onverstandig om te sterk afhankelijk te zijn van
het formaat.
Frame-informatie (.debug_frame en .eh_frame) is sterk afhankelijk van de ABI/ISA van de
object bestand. Standaard gebruiken we een generieke set registernamen tot 100
registers met de naam r0-100. De optie '-R' gebruikt een ingebouwde generieke registernaamset
het verwerken van maximaal 1200 registers genaamd r0-r1199. De '-x abi= ' beschrijving hieronder laat zien
hoe een abi een naam te geven en die te gebruiken om de verwerking van -f of -F te begeleiden. Tenzij de cpu voor de
objectbestand dat wordt gedumpt heeft veel registers, gebruik geen -R of -x abi=generic zoals dat kan
onnodig langzaam framesecties dumpen. Gebruik in plaats daarvan de juiste abi (als deze bestaat in
dwarfdump.conf) of een generiek zoals -x abi=generic100 of -x abi=generic500. Krijgen
MIPS/IRIX registreer namen namen en roep de oude versie 2 libdwarf frame-interface aan met behulp van de
optie '-x abi=mips'. Zonder '-R' of '-x abi= 'dwarfdump negeert de dwarfdump.conf
-bestand en gebruikt een gecompileerde generieke set registernamen. Als er geen '-x naam= ' is gegeven,
dwarfdump zoekt naar "./dwarfdump.conf", "$HOME/.dwarfdump.conf", "
prefix>/lib/dwarfdump.conf" en neemt de eerste die wordt gevonden. Als een of meer '-x name= '
wordt gegeven, wordt de laatste hiervan gebruikt en worden alle andere dergelijke bestanden genegeerd.
Sommige -k (controle) opties drukken zogenaamde onschuldige fouten af. Dit zijn compilerfouten
die geen bekend probleem veroorzaken en alleen in libdwarf zelf worden gedetecteerd. Deze
zijn moeilijk correct te rapporteren in dwergdump en eventuele foutreeksen lijken mogelijk niet in de buurt
tot het moment waarop de fout is opgetreden.
URI STIJL INVOER SNAREN
De en de opties die naamreeksen aannemen, zoeken naar URI's en vertalen de
URI-tekenreeksen worden standaard omgezet in tekens (zie -x, -c , -S, -u). Dus elk enkel %
karakter wordt behandeld alsof de volgende twee karakters hexadecimale cijfers zijn die de
onderliggende ware karakter. Verschillende karakters zijn betekenisvol voor shells (zoals bash of
sh) en getopt (zoals het spatieteken) Als de URI-vertaling iets doet
drukt de voor en na van de URI-vertaling af op standaarduitvoer, dus inspectie van
de eerste uitvoerregels laten zien of URI iets heeft gedaan. De daadwerkelijke opties zelf
worden verondersteld niet-URI te zijn. Dus in de optie '-cS&T' moet het -c gedeelte niet-URI zijn, maar
het &-teken kan invoerproblemen veroorzaken, dus in plaats daarvan kan '-cS%26T' worden gebruikt. Om eigenlijk
voer een enkel %-teken in (bijvoorbeeld in een naam), verdubbel het tot %% op de opdrachtregel.
Opties -U (URI-interpretatie uitschakelen) en -q (het vinden van URI-reeksen stil maken)
geven fijnere controle over URI-interpretatie. PP Als voorbeeld, om een string'a b' te krijgen maak je de
tekenreeks 'a%20b' (hier is het citaat (') ter uiteenzetting geen onderdeel van de tekenreeks, hoewel citaat
is zeker problematisch in een naam). In plaats van " aanhalingstekens in de tekenreeks te escapen, typt u
%25, zoals in
'a "b' moet worden getypt 'a%20%25b' Alle tekens kunnen in URI-stijl worden getypt, niet alleen
karakters die problematisch zijn voor de shell of getopt. We raden u ten zeerste aan niet te typen
URI-achtige tekens waar deze niet nodig zijn of gebruik het %-teken zelf in de opdracht
regelreeksen, tenzij u moet.
AFDRUKKEN OPTIES
-a Druk elke sectie zo onafhankelijk mogelijk af. Secties die veilig kunnen zijn
onafhankelijk afgedrukt (zoals .debug_abbrev) relevante informatie in het rapport laten afdrukken
(soms afhankelijk van -v).
-b Druk de sectie .debug_abbrev af. Omdat de DWARF-specificaties niet uitsluiten
vuilnis gegevensgebieden in .debug_abbrev (als er niet naar wordt verwezen vanuit .debug_info)
eventuele rommelbytes kunnen ertoe leiden dat deze afdruk mislukt.
-c Locatielijsten afdrukken.
-f Druk de sectie .debug_frame af.
-F Druk de .eh_frame-sectie af.
-i Druk de sectie .debug_info af.
-l Druk de .debug_info-sectie en de bijbehorende lijnsectiegegevens af.
-m Druk de sectie .debug_macinfo af.
-N Print .debug_ranges sectie. Omdat de DWARF-specificaties niet uitsluiten
gegevensgebieden in .debug_ranges (als er niet naar wordt verwezen vanuit .debug_info)
eventuele rommelbytes kunnen ertoe leiden dat deze afdruk mislukt.
-p Druk de sectie .debug_pubnames af.
-r Druk de sectie .debug_aranges af.
-s Print .debug_string sectie.
-ta Druk alleen de IRIX-secties .debug_static_funcs en .debug_static_vars af.
-tf Druk de IRIX-sectie .debug_static_funcs af.
-TV Druk de IRIX-sectie .debug_static_vars af.
-w Druk de IRIX-only .debug_weaknames sectie af.
-y Druk de sectie .debug_pubtypes af (en .debug_typenames, een sectie alleen voor SGI IRIX).
Het hebben van dwergdump-afdrukverplaatsingen kan helpen vaststellen of dwergdump er een begrijpt
eventuele verhuizingen.
-o Print alle verhuisgegevens zo goed mogelijk uit.
-Oi Print .rel*debug_info verhuizingen.
-ol Print .rel*debug_line verhuizing.
-op Print .rel*debug_pubnames verhuizing.
-oa Heeft geen effect.
-Of Print .rel*debug_aranges verhuizingen.
-van Print .rel*debug_frame verhuizingen.
-oe Print .rel*debug_loc verhuizingen.
-of Print .rel*debug_ranges verhuizingen.
-g Normaal alleen gebruikt voor het testen van libdwarf, dit vertelt dwergdump om .debug_info af te drukken
en gebruik een oudere interfacefunctie dwarf_loclist() (een functie die niet overweg kan met
alle huidige locatielijsten).
-V Druk een dwergdump-datum-/versietekenreeks af en stop.
CONTROLEREN OPTIES
-cg Beperkt de controle tot compilers waarvan de producerstring begint met 'GNU' en draait
uit -cs.
-cs Beperkt de controle tot compilers waarvan de producerreeks begint met 'SN' en draait
uit -cg.
-naam Beperkt de controle tot compilers waarvan de producerstring 'name' bevat (geen case
gevoelig). De 'name' wordt gelezen als een URI-string.
-ka : Bochten on allen controleren opties behalve -kxe (-kxe macht
wees langzaam genoeg, misschien wil je het niet routinematig gebruiken.)
-kb : Controles voor zeker afkortingen sectie fouten wanneer lezing
Overlijdt.
-kc Controleert op fouten in constanten in debug_info.
-kd Schakelt volledige rapportage van fouttotalen per producent in. (de standaard toont minder
detail).
-naar Schakelt het lezen van pubnamen en het controleren op fde-fouten in.
-kf Schakelt het controleren op FDE-fouten in.
-kF Schakelt het controleren op lijntabelfouten in.
-kg Schakelt het controleren op ongebruikte hiaten in .debug_info in (deze hiaten zijn geen fout, alleen
een verspilling van ruimte).
-ki Zorgt ervoor dat een samenvatting van de controleresultaten per compiler (producent) wordt afgedrukt op het
end.
-kl Schakelt het controleren van de locatielijst in.
-km Schakelt het controleren van bereiken in.
-kM Schakelt het controleren van sinaasappelen in.
-kr Schakelt de controle van DIE-tag-attr-combinaties in.
-kR Schakelt het lezen van DIE's in en het controleren op voorwaartse verklaringen van DW_AT_specificatie
attributen. (die geen fout zijn, maar een bron van inefficiëntie kunnen zijn voor
debuggers).
-ks Schakelt extra rapportage in voor sommige DIE-fouten die tijdens de controle worden gedetecteerd.
-kS Schakelt het controleren van DIE-referenties op cirkelreferenties in.
-kt Schakelt het controleren van tag-tagcombinaties in.
-kx Schakelt check_frames in.
-kxe Schakelt basis check_frames uit en schakelt uitgebreide framecontrole in.
-ky Schakelt type_offset, decl_file controle in,
OPTIE WIJZIGERS
-C Normaal gesproken zijn bij het controleren op tag-tag of tag-attribuutcombinaties beide standaard
combinaties en enkele veelgebruikte extensies zijn toegestaan. Met -C zijn de extensies
uit de toegestane combinatieklasse gehaald.
-d Zet bij het afdrukken van DIE's alle attributen voor elke DIE op dezelfde (lange) regel als
het etiket. Dit maakt het zoeken naar DIE-informatie (zoals bij grep) veel eenvoudiger
de hele DIE staat op één regel.
-D Schakelt de weergave van sectie-offsets en attribuutwaarden in afgedrukte uitvoer uit.
Dus de uitvoer van .debug_info is alleen TAG's en attributen. Voor pubnamen (en dergelijke)
het verwijdert offsets van de uitvoer. Voor locatieslijsten verwijdert het de offsets
de uitvoer, maar dat is nutteloos omdat de attribuutwaarden dat ook niet laten zien
doet de locatiegegevens.
-e Schakelt afkappen van attribuut- en tagnamen in. DW_TAG_foo wordt bijvoorbeeld
foe. Niet compatibel met controleren, alleen handig voor het afdrukken van stansen.
-G Voeg bij het afdrukken globale offsets toe aan de afgedrukte offsets.
-H aantal
Bij het afdrukken of controleren van .debug_info beëindigt dit het zoeken naar 'nummer'
compilatie-eenheden. Bij het afdrukken van frame-informatie beëindigt dit de FDE
rapportage na 'aantal' FDE's en de CIE-rapportage (die optreedt als men -v toevoegt)
na 'aantal' CIE's. Voorbeeld '-H 1'
-M Bij het printen betekent dit dat men voor elk attribuut het FORM wil laten zien. Als een
-v wordt ook toegevoegd (of meer dan één) en details van welke vorm dan ook
getoond.
-n Bij het afdrukken van frames wordt hiermee het zoeken naar functienamen uitgeschakeld. In een echt
groot object het zoeken kan meer tijd kosten dan men wil wachten, dus dit vermijdt
de zoektocht.
-Q Onderdrukt het afdrukken van sectiegegevens (automatisch ingesteld met een controleoptie).
-R Bij het printen van frames voor ABI's met veel registers zijn er maximaal 1200 mogelijk
registers te benoemen (zoals R999) zonder een ABI te kiezen met bijvoorbeeld '-x
abi=ppc'
-v Verhoogt de details die worden weergegeven bij het afdrukken. In sommige secties worden meer -v-opties gebruikt
zal het detail vergroten (één tot drie zijn nuttig) of kan het rapport wijzigen in
toon bijvoorbeeld de daadwerkelijke regelgegevenscommando's in plaats van de resulterende regelgegevens
tafel.
SELECTIEF ENTRY AFDRUKKEN
Deze -S-opties staan op zichzelf en drukken basisinformatie af over de compilatie-eenheid en
DIE waar de string(s) verschijnen. Maximaal één van elk van de volgende is effectief (dus voor
men kan bijvoorbeeld maar één 'match' hebben, maar men kan ook een 'match', een 'any' en een hebben
'regex'). Elke -S zorgt ervoor dat de sectie .debug_info wordt geïnspecteerd. Geen controle-opties of
afdrukopties moeten worden geleverd met -S.
-S match=tekenreeks
Bij het afdrukken van DIE's voor elke tagwaarde of attribuutnaam die overeenkomt met 'string'
druk de informatie van de compilatie-eenheid en de offset van de sectie exact af. Elke CU met
geen overeenkomst wordt niet afgedrukt. De 'string' wordt gelezen als een URI-string.
-S elke=tekenreeks
Bij het afdrukken van DIE's voor elke tagwaarde of attribuutnaam die 'string' bevat
ergens in de tag of het attribuut (niet hoofdlettergevoelig) de compilatie-eenheid afdrukken
informatie en de sectie-offset. Elke CU zonder overeenkomst wordt niet afgedrukt. De
'string' wordt gelezen als een URI-string.
-S regex=tekenreeks
Bij het afdrukken van DIE's voor elke tagwaarde of attribuutnaam waarbij de 'string' requular
uitdrukking komt overeen met het afdrukken van de informatie over de compilatie-eenheid en de bijbehorende sectie-offset.
Elke CU zonder overeenkomst wordt niet afgedrukt. De 'string' wordt gelezen als een URI-string.
De tekenreeks mag geen spaties of andere tekens bevatten die betekenis hebben voor opt(3) en
de shell verwijdert aanhalingstekens en andere tekens. Dus de string wordt verondersteld binnen te zijn
URI-stijl en is vertaald. Met andere woorden, om overeen te komen met 'ab' maakt u de -S-tekenreeks 'a%20b'
In plaats van " aanhalingstekens in de tekenreeks te laten ontsnappen, typt u %25, zoals in
'a "b' moet worden getypt 'a%20%25b' (de ' zijn hier ter uiteenzetting, geen onderdeel van de
snaren). Alle tekens kunnen in URI-stijl worden getypt, niet alleen tekens die dat wel zijn
problematisch voor de shell of getopt.
De opties -S any= en -S regex= zijn alleen bruikbaar als de vereiste bibliotheekfuncties dat ook zijn
gevonden tijdens het configureren.
De optie -W is een wijziging van de optie -S en verhoogt de hoeveelheid uitvoer -W
afdrukken. Nu tonen we de -W in context met een -S optie.
-S overeenkomst=tekenreeks1 -W
Drukt de bovenliggende boom en de onderliggende boom af voor de DIE's die overeenkomen met -S.
-S overeenkomst=tekenreeks2 -Wp
Drukt de bovenliggende boom af voor de DIE's die overeenkomen met -S.
-S overeenkomst=tekenreeks3 -Wc
Drukt de bovenliggende boom af voor de DIE's die overeenkomen met -S.
ANDERE OPTIES
-# aantal
Deze optie regelt de interne foutopsporingsuitvoer, hogere getallen betekenen meer foutopsporing
acties. Zie de broncode.
-x naam=/p/a/t/h.conf
Het opgegeven bestandspad is de naam van een bestand waarvan wordt aangenomen dat het een dwarfdump.conf-achtig bestand is.
Het bestandspad wordt gelezen als een URI-tekenreeks.
-x abi=ppc
Selecteert de abi (uit een bestand dwarfdump.conf) die moet worden gebruikt in het afdrukframe
informatie (hier met ppc als voorbeeld). De abi wordt gelezen als een URI-string.
-P Wanneer u dit aanvinkt, voegt u de lijst met namen van compilatie-eenheden toe voor elke producent-
compiler naar de afgedrukte controleresultaten.
-q Wanneer een URI wordt gevonden en vertaald tijdens het lezen van de opdrachtregel, wees dan stil
de URI-vertaling. Dat wil zeggen, druk niet de originele en vertaalde optie af
snaren.
-E Schakelt het afdrukken van object-interne headergegevens in voor sommige systemen (voor Unix/Linux wel
niets).
-u naam
Schakelt selectief afdrukken van DIE's in (afdrukken zoals -i). Alleen de MATRIJZEN voor a
compilatie-eenheid die overeenkomt met de opgegeven naam, worden afgedrukt. Als de compilatie-eenheid
is ./a/b/cc de 'cuname' die u opgeeft, moet cc zijn als de tekens door de
definitieve padscheidende / worden genegeerd. Als 'cuname' begint met een / dan is het geheel
namestring van een compilatie-eenheid moet overeenkomen met 'cuname'. De 'cuname' wordt gelezen als een
URI-tekenreeks.
-U Schakel de URI-interpretatie van de opdrachtregelreeksen volledig uit. Moet zijn
op de opdrachtregel voordat er URI-tekenreeksen worden aangetroffen om volledig effectief te zijn.
-z Niet langer ondersteund.
Gebruik dwergdump online met behulp van onworks.net-services