addr2line(1): Skillnad mellan sidversioner
Admin (diskussion | bidrag) (Skapade sidan med '= 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/ <BR><BR>Tack till [https://dataservice.pcbutiken.se/ Datorservice] som har sponsrat [https://www.linux.se Linux.se] med webbhotell. Kategori:Linuxmanual grupp 1 Kategori:Linu...') |
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
||
| Rad 1: | Rad 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 <code>-e</code>. Standardvärdet är <code>a.out</code>. | |||
För relokerbara objekt kan en specifik sektion anges med <code>-j</code>. | |||
Standardformatet för utmatning är: | |||
<pre> | |||
FILNAMN:RADNUMMER | |||
</pre> | |||
Om filnamn eller funktionsnamn inte kan bestämmas skrivs <code>??</code>. Om radnumret inte kan bestämmas skrivs <code>0</code>. | |||
== Användning == | |||
Exempel med adress på kommandoraden: | |||
<pre> | |||
addr2line -e program 0x401234 | |||
</pre> | |||
Exempel med flera adresser: | |||
<pre> | |||
addr2line -e program 0x401234 0x401250 0x401300 | |||
</pre> | |||
Exempel där adresser läses från standard input: | |||
<pre> | |||
echo 0x401234 | addr2line -e program | |||
</pre> | |||
Det går också att använda symbol+offset i stället för rå adress. | |||
== Viktiga flaggor == | |||
* <code>-a</code>, <code>--addresses</code> — visa indataadressen före resultatet | |||
* <code>-b BFDNAME</code>, <code>--target=BFDNAME</code> — ange objektformat | |||
* <code>-C</code>, <code>--demangle[=stil]</code> — avkoda manglade symbolnamn till läsbara namn, till exempel för C++ | |||
* <code>-e FIL</code>, <code>--exe=FIL</code> — ange körbar fil eller objektfil | |||
* <code>-f</code>, <code>--functions</code> — visa funktionsnamn | |||
* <code>-s</code>, <code>--basenames</code> — visa bara basnamnet på filerna | |||
* <code>-i</code>, <code>--inlines</code> — visa även information om inlinade funktioner | |||
* <code>-p</code>, <code>--pretty-print</code> — skriv ut resultatet i mer människoläsbart format, en rad per adress | |||
* <code>-j</code>, <code>--section</code> — tolka värden som offset relativt en viss sektion | |||
* <code>-r</code>, <code>--no-recurse-limit</code> — stäng av rekursionsgräns vid demangling | |||
* <code>-R</code>, <code>--recurse-limit</code> — slå på rekursionsgräns vid demangling | |||
== Utmatning == | |||
Varje indataadress ger normalt en rad med: | |||
<pre> | |||
FILNAMN:RADNUMMER | |||
</pre> | |||
Om <code>-a</code> används visas först adressen. | |||
Om <code>-f</code> används visas även funktionsnamnet. | |||
Om <code>-i</code> används och adressen ligger i kod som blivit inlinad av kompilatorn, skrivs ytterligare rader ut för varje omslutande inlinad funktion. | |||
Om <code>-p</code> används skrivs varje träff på en mer sammanhängande rad med adress, funktion, fil och radnummer. | |||
== Inlinade funktioner == | |||
Med <code>-i</code> kan '''addr2line''' visa hela kedjan av inlinade anrop. | |||
Exempel: om <code>main</code> har inlinat <code>callee1</code>, och <code>callee1</code> har inlinat <code>callee2</code>, och adressen tillhör <code>callee2</code>, så visas även information för <code>callee1</code> och <code>main</code>. | |||
== Demangling == | |||
Med <code>-C</code> 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. | |||
* <code>-R</code> aktiverar denna gräns | |||
* <code>-r</code> stä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: | |||
<pre> | |||
addr2line -a -f -e program 0x401234 | |||
</pre> | |||
Visa bara filernas basnamn: | |||
<pre> | |||
addr2line -s -e program 0x401234 | |||
</pre> | |||
Visa snyggare, mer läsbar utmatning: | |||
<pre> | |||
addr2line -p -f -C -e program 0x401234 | |||
</pre> | |||
Visa även inlinade anrop: | |||
<pre> | |||
addr2line -i -f -C -e program 0x401234 | |||
</pre> | |||
== Se även == | |||
* binutils Info-dokumentation | |||
* <code>backtrace(3)</code> | |||
= Sidslut = | = Sidslut = | ||
Nuvarande version från 26 april 2026 kl. 05.38
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.