addr2line(1)
addr2line
addr2line konverterar adresser eller symbol+offset till filnamn och radnummer.
Beskrivning
addr2line översätter adresser eller symbol+offset i en körbar fil till motsvarande källfil och radnummer med hjälp av debuginformation.
Verktyget kan användas på två sätt:
- adresser eller symbol+offset anges direkt på kommandoraden
- adresser eller symbol+offset läses från standard input
Den körbara fil eller objektfil som ska användas anges med -e. Standardvärdet är a.out.
För relokerbara objekt kan en specifik sektion anges med -j.
Standardformatet för utmatning är:
FILNAMN:RADNUMMER
Om filnamn eller funktionsnamn inte kan bestämmas skrivs ??. Om radnumret inte kan bestämmas skrivs 0.
Användning
Exempel med adress på kommandoraden:
addr2line -e program 0x401234
Exempel med flera adresser:
addr2line -e program 0x401234 0x401250 0x401300
Exempel där adresser läses från standard input:
echo 0x401234 | addr2line -e program
Det går också att använda symbol+offset i stället för rå adress.
Viktiga flaggor
-a,--addresses— visa indataadressen före resultatet-b BFDNAME,--target=BFDNAME— ange objektformat-C,--demangle[=stil]— avkoda manglade symbolnamn till läsbara namn, till exempel för C++-e FIL,--exe=FIL— ange körbar fil eller objektfil-f,--functions— visa funktionsnamn-s,--basenames— visa bara basnamnet på filerna-i,--inlines— visa även information om inlinade funktioner-p,--pretty-print— skriv ut resultatet i mer människoläsbart format, en rad per adress-j,--section— tolka värden som offset relativt en viss sektion-r,--no-recurse-limit— stäng av rekursionsgräns vid demangling-R,--recurse-limit— slå på rekursionsgräns vid demangling
Utmatning
Varje indataadress ger normalt en rad med:
FILNAMN:RADNUMMER
Om -a används visas först adressen.
Om -f används visas även funktionsnamnet.
Om -i används och adressen ligger i kod som blivit inlinad av kompilatorn, skrivs ytterligare rader ut för varje omslutande inlinad funktion.
Om -p används skrivs varje träff på en mer sammanhängande rad med adress, funktion, fil och radnummer.
Inlinade funktioner
Med -i kan addr2line visa hela kedjan av inlinade anrop.
Exempel: om main har inlinat callee1, och callee1 har inlinat callee2, och adressen tillhör callee2, så visas även information för callee1 och main.
Demangling
Med -C kan symbolnamn från exempelvis C++ göras mer läsbara. Detta tar bort låg-nivåmangling så att funktionsnamnen blir lättare att förstå.
Det finns också stöd för olika demangling-stilar beroende på kompilator.
Rekursionsgräns
Vid demangling kan mycket komplexa symbolnamn orsaka väldigt djup rekursion. Därför finns en standardgräns på 2048 nivåer.
-Raktiverar denna gräns-rstänger av den
Att stänga av gränsen kan behövas för mycket komplicerade namn, men kan också orsaka stackutrymning.
Exempel
Visa adress tillsammans med funktion:
addr2line -a -f -e program 0x401234
Visa bara filernas basnamn:
addr2line -s -e program 0x401234
Visa snyggare, mer läsbar utmatning:
addr2line -p -f -C -e program 0x401234
Visa även inlinade anrop:
addr2line -i -f -C -e program 0x401234
Se även
- binutils Info-dokumentation
backtrace(3)
Sidslut
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/addr2line.1.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorservice som har sponsrat Linux.se med webbhotell.