Scroll to navigation

OBJDUMP(1) Instrumente pentru dezvoltare(programare) GNU OBJDUMP(1)

NUME

objdump - afișează informații din fișierele obiect

SINOPSIS

objdump [-a|--archive-headers]
[-b nume-bfd|--target=nume-bfd]
[-C|--demangle[=stil] ]
[-d|--disassemble[=simbol]]
[-D|--disassemble-all]
[-z|--disassemble-zeroes]
[-EB|-EL|--endian={big | little }]
[-f|--file-headers]
[-F|--file-offsets]
[--file-start-context]
[-g|--debugging]
[-e|--debugging-tags]
[-h|--section-headers|--headers]
[-i|--info]
[-j secțiunea|--section=secțiunea]
[-l|--line-numbers]
[-S|--source]
[--source-comment[=text]]
[-m mașina|--architecture=mașina]
[-M opțiuni|--disassembler-options=opțiuni]
[-p|--private-headers]
[-P opțiuni|--private=opțiuni]
[-r|--reloc]
[-R|--dynamic-reloc]
[-s|--full-contents]
[-Z|--decompress]
[-W[lLiaprmfFsoORtUuTgAck]|
--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links]]
[-WK|--dwarf=follow-links]
[-WN|--dwarf=no-follow-links]
[-wD|--dwarf=use-debuginfod]
[-wE|--dwarf=do-not-use-debuginfod]
[-L|--process-links]
[--ctf=secțiunea]
[--sframe=secțiunea]
[-G|--stabs]
[-t|--syms]
[-T|--dynamic-syms]
[-x|--all-headers]
[-w|--wide]
[--start-address=adresa]
[--stop-address=adresa]
[--no-addresses]
[--prefix-addresses]
[--[no-]show-raw-insn]
[--adjust-vma=decalaj]
[--show-all-symbols]
[--dwarf-depth=n]
[--dwarf-start=n]
[--ctf-parent=secțiunea]
[--no-recurse-limit|--recurse-limit]
[--special-syms]
[--prefix=prefix]
[--prefix-strip=nivel]
[--insn-width=lățimea]
[--visualize-jumps[=color|=extended-color|=off]
[--disassembler-color=[off|terminal|on|extended]
[-U metoda] [--unicode=metoda]
[-V|--version]
[-H|--help]
fișier-obiect...

DESCRIERE

objdump afișează informații despre unul sau mai multe fișiere obiect. Opțiunile controlează ce informații specifice se afișează. Aceste informații sunt utile mai ales programatorilor care lucrează la instrumentele de compilare, spre deosebire de programatorii care doresc doar ca programul lor să fie compilat și să funcționeze.

fișier-obiect... sunt fișierele obiect care urmează să fie examinate. Atunci când specificați arhive, objdump afișează informații despre fiecare dintre fișierele obiect membre.

OPȚIUNI

Formele lungă și scurtă ale opțiunilor, prezentate aici ca alternative, sunt echivalente. Cel puțin o opțiune din lista -a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-P,-r,-R,-s,-S,-t,-T,-V,-x trebuie să fie dată.

Dacă oricare dintre fișierele fișier-obiect sunt arhive, afișează informațiile din antetul arhivei (într-un format similar cu ls -l). Pe lângă informațiile pe care le-ați putea lista cu ar tv, objdump -a afișează formatul fișierului obiect al fiecărui membru al arhivei.
La descărcarea informațiilor, adăugă mai întâi decalaj la toate adresele secțiunilor. Acest lucru este util în cazul în care adresele secțiunilor nu corespund tabelului de simboluri, ceea ce se poate întâmpla la plasarea secțiunilor la anumite adrese atunci când se utilizează un format care nu poate reprezenta adresele secțiunilor, cum ar fi a.out.
Specifică că formatul codului obiect pentru fișierele obiect este nume-bfd. Această opțiune poate să nu fie necesară; objdump poate recunoaște automat multe formate.

De exemplu,

 objdump -b oasys -m vax -h fu.o
    

afișează informații sumare din antetele secțiunilor (-h) din fu.o, care este identificat explicit (-m) ca fiind un fișier obiect VAX în formatul produs de compilatoarele Oasys. Puteți lista formatele disponibile cu opțiunea -i.

Decodificarea (demangle) numelor de simboluri de nivel scăzut în nume de nivel utilizator. În afară de eliminarea oricărei sublinieri inițiale adăugate de sistem, acest lucru face ca numele funcțiilor C++ să fie lizibile. Compilatoare diferite au stiluri diferite de decodificare. Argumentul opțional „demangling style” poate fi utilizat pentru a alege un stil de decodificare adecvat pentru compilatorul dumneavoastră.
Activează sau dezactivează limitarea numărului de recursivități efectuate în timpul decodificării șirurilor de caractere. Deoarece formatele de manipulare a numelor permit un nivel infinit de recursivitate, este posibil să se creeze șiruri a căror decodificare va epuiza spațiul de stivă disponibil pe calculatorul gazdă, declanșând o eroare de memorie. Limitarea încearcă să prevină acest lucru prin restricționarea recursivității la 2048 de niveluri de imbricare.

În mod implicit, această limită este activată, dar poate fi necesar să fie dezactivată pentru a dezmembra nume cu adevărat complicate. Rețineți totuși că, dacă limita de recursivitate este dezactivată, este posibilă epuizarea stivei și orice raport de eroare privind un astfel de eveniment va fi respins.

Afișează informații de depanare. Această opțiune încearcă să analizeze informațiile din formatul de depanare STABS stocate în fișier și să le afișeze folosind o sintaxă asemănătoare C. Dacă nu a fost găsită nicio depanare STABS, această opțiune recurge la opțiunea -W pentru a afișa orice informație DWARF din fișier.
La fel ca -g, dar informațiile sunt generate într-un format compatibil cu instrumentul ctags.
Afișează mnemonica de asamblare pentru instrucțiunile mașinii din fișierul de intrare. Această opțiune dezasamblează numai acele secțiuni care se așteaptă să conțină instrucțiuni. Dacă se dă argumentul opțional simbol, atunci se afișează mnemonica de asamblare începând cu simbolul. Dacă simbol este un nume de funcție, dezasamblarea se va opri la sfârșitul funcției, altfel se va opri când se întâlnește următorul simbol. În cazul în care simbol nu se potrivește, nu se va afișa nimic.

Rețineți că dacă opțiunea --dwarf=follow-links este activată, atunci orice tabele de simboluri din fișierele de informații de depanare legate vor fi citite și utilizate la dezasamblare.

La fel ca -d, dar dezasamblează conținutul tuturor secțiunilor non-bss care nu sunt goale, nu doar pe cele care se așteaptă să conțină instrucțiuni. -j poate fi utilizată pentru a selecta secțiuni specifice.

Această opțiune are, de asemenea, un efect subtil asupra dezasamblării instrucțiunilor din secțiunile de cod. Atunci când opțiunea -d este în vigoare, objdump va presupune că orice simboluri prezente într-o secțiune de cod apar la limita dintre instrucțiuni și va refuza să dezasambleze peste o astfel de limită. Cu toate acestea, atunci când opțiunea -D este în vigoare, această presupunere este suprimată. Aceasta înseamnă că este posibil ca rezultatele -d și -D să difere dacă, de exemplu, datele sunt stocate în secțiunile de cod.

Dacă ținta este o arhitectură ARM, această opțiune are, de asemenea, efectul de a forța dezasamblatorul să decodifice bucăți de date găsite în secțiunile de cod ca și cum ar fi instrucțiuni.

Rețineți că dacă opțiunea --dwarf=follow-links este activată, atunci orice tabele de simboluri din fișierele de informații de depanare legate vor fi citite și utilizate la dezasamblare.

La dezasamblare, nu imprimă adresele pe fiecare linie sau pentru simboluri și decalaje de realocare. În combinație cu --no-show-raw-insn acest lucru poate fi util pentru compararea rezultatelor compilatorului.
La dezasamblare, imprimă adresa completă pe fiecare linie. Acesta este cel mai vechi format de dezasamblare.
Specifică caracterul „endianness” al fișierelor obiect. Acest lucru afectează numai dezasamblarea. Acest lucru poate fi util atunci când dezasamblați un format de fișier care nu descrie informații despre „endianness”, cum ar fi înregistrările S.
Afișează informații sumare din antetul general al fiecărui fișier fișier-obiect.
La dezasamblarea secțiunilor, ori de câte ori se afișează un simbol, se afișează și decalajul de fișier al regiunii de date care urmează să fie evacuată. În cazul în care sunt omise zerouri, atunci când se reia dezasamblarea, indică utilizatorului câte zerouri au fost omise și decalajul de fișier al locației de la care se reia dezasamblarea. Atunci când se descarcă secțiuni, se afișează decalajul de fișier al locației de la care începe descărcarea.
Specifică că, atunci când se afișează cod sursă/dezasamblare inter-listă (presupune -S) dintr-un fișier care nu a fost încă afișat, se extinde contextul la începutul fișierului.
Afișează informații sumare din antetele secțiunilor din fișierul obiect.

Segmentele de fișier pot fi realocate la adrese non-standard, de exemplu prin utilizarea opțiunilor -Ttext, -Tdata sau -Tbss la \fBld. Cu toate acestea, unele formate de fișiere obiect, cum ar fi a.out, nu stochează adresa de pornire a segmentelor de fișier. În aceste situații, deși ld realocă corect secțiunile, utilizarea objdump -h pentru a lista anteturile secțiunilor fișierului nu poate afișa adresele corecte. În schimb, se afișează adresele obișnuite, care sunt implicite pentru țintă.

Rețineți că, în unele cazuri, este posibil ca o secțiune să aibă atât atributul READONLY, cât și atributul NOREAD activate. În astfel de cazuri, atributul NOREAD are prioritate, dar objdump le va raporta pe ambele, deoarece așezarea exactă a biților de semnalizare poate fi importantă.

Afișează un rezumat al opțiunilor la objdump și iese.
Afișează o listă cu toate arhitecturile și formatele de obiecte disponibile pentru specificare cu -b sau -m.
Afișează informații pentru secțiunea nume. Această opțiune poate fi specificată de mai multe ori.
Afișează conținutul secțiunilor care nu sunt de depanare și care se găsesc în fișiere debuginfo separate care sunt legate de fișierul principal. Această opțiune implică automat opțiunea -WK și vor fi afișate numai secțiunile solicitate prin alte opțiuni din linia de comandă.
Etichetează afișarea (utilizând informații de depanare) cu numele fișierului și numerele liniei sursă corespunzătoare codului obiect sau realocărilor afișate. Utilă numai cu -d, -D sau -r.
Specifică arhitectura care trebuie utilizată la dezasamblarea fișierelor obiect. Această opțiune poate fi utilă la dezasamblarea fișierelor obiect care nu descriu informații despre arhitectură, cum ar fi înregistrările S. Puteți lista arhitecturile disponibile cu opțiunea -i.

Pentru majoritatea arhitecturilor este posibil să se furnizeze un nume de arhitectură și un nume de mașină, separate prin două puncte. De exemplu, foo:bar s-ar referi la tipul de mașină bar în arhitectura foo. Acest lucru poate fi util dacă objdump a fost configurat pentru a permite mai multe arhitecturi.

Dacă ținta este o arhitectură ARM, atunci această opțiune are un efect suplimentar. Aceasta restricționează dezasamblarea doar la instrucțiunile acceptate de arhitectura specificată de mașina. Dacă este necesară utilizarea acestei opțiuni deoarece fișierul de intrare nu conține informații despre arhitectură, dar se dorește și dezasamblarea tuturor instrucțiunilor, utilizați -marm.

Transmite informații specifice țintei către dezasamblator. Compatibilă numai cu unele ținte. Dacă este necesar să specificați mai multe opțiuni de dezasamblare, atunci pot fi utilizate mai multe opțiuni -M sau pot fi plasate împreună într-o listă separată prin virgule.

Pentru ARC, dsp controlează imprimarea instrucțiunilor DSP, spfp selectează imprimarea instrucțiunilor FPX de precizie unică FP, dpfp selectează imprimarea instrucțiunilor FPX de precizie dublă FP, quarkse_em selectează imprimarea instrucțiunilor speciale QuarkSE-EM, fpuda selectează imprimarea instrucțiunilor de asistență de precizie dublă, fpus selectează imprimarea instrucțiunilor FPU de precizie unică FP, în timp ce fpud selectează imprimarea instrucțiunilor FPU de precizie dublă FP. În plus, se poate opta pentru imprimarea tuturor imediatelor în hexazecimal utilizând hex. În mod implicit, valorile imediate scurte sunt imprimate utilizând reprezentarea zecimală, în timp ce valorile imediate lungi sunt imprimate în hexazecimal.

cpu=... permite aplicarea unui anumit ISA la dezasamblarea instrucțiunilor, înlocuind valoarea -m sau orice se află în fișierul ELF. Acest lucru ar putea fi util pentru a selecta ARC EM sau HS ISA, deoarece arhitectura este aceeași pentru acestea, iar dezasamblatorul se bazează pe datele private din antetul ELF pentru a decide dacă codul este pentru EM sau HS. Această opțiune poate fi specificată de mai multe ori - va fi utilizată doar ultima valoare. Valorile valabile sunt aceleași ca pentru opțiunea de asamblare -mcpu=....

Dacă ținta este o arhitectură ARM, această opțiune poate fi utilizată pentru a selecta setul de nume de registre care este utilizat în timpul dezasamblării. Specificarea -M reg-names-std (implicit) va selecta denumirile registrelor utilizate în documentația setului de instrucțiuni ARM, dar cu registrul 13 denumit „sp”, registrul 14 denumit „lr” și registrul 15 denumit „pc”. Specificarea -M reg-names-apcs va selecta setul de nume utilizat de standardul ARM Procedure Call Standard, în timp ce specificarea -M reg-names-raw va utiliza doar r urmat de numărul registrului.

Există, de asemenea, două variante ale schemei de denumire a registrelor APCS activate prin -M reg-names-atpcs și -M reg-names-special-atpcs care utilizează convențiile de denumire ARM/Thumb Procedure Call Standard; (fie cu denumirile registrelor normale, fie cu denumirile registrelor speciale).

Această opțiune poate fi, de asemenea, utilizată pentru arhitecturile ARM pentru a forța dezasamblatorul să interpreteze toate instrucțiunile ca instrucțiuni Thumb prin utilizarea opțiunii --disassembler-options=force-thumb. Acest lucru poate fi util atunci când încercați să dezasamblați codul thumb produs de alte compilatoare.

Pentru țintele AArch64, această opțiune poate fi utilizată pentru a stabili dacă instrucțiunile sunt dezasamblate ca cele mai generale instrucțiuni utilizând opțiunea -M no-aliases sau dacă notele de instrucțiuni ar trebui generate ca comentarii în dezasamblare utilizând opțiunea -M note.

Pentru x86, unele dintre opțiuni dublează funcțiile opțiunii -m, dar permit un control mai fin.

"x86-64"
"i386"
"i8086"
Selectează dezasamblarea pentru arhitectura dată.
"intel"
"att"
Selectează între modul de sintaxă Intel și modul de sintaxă AT&T.
"amd64"
"intel64"
Selectează între AMD64 ISA și Intel64 ISA.
"intel-mnemonic"
"att-mnemonic"
Selectează între modul intel mnemonic și modul AT&T mnemonic. Notă: "intel-mnemonic" implică "intel" și "att-mnemonic" implică "att".
"addr64"
"addr32"
"addr16"
"data32"
"data16"
Specifică dimensiunea implicită a adresei și dimensiunea operandului. Aceste cinci opțiuni vor fi anulate dacă "x86-64", "i386" sau "i8086" apar ulterior în șirul de opțiuni.
"suffix"
În modul AT&T și, de asemenea, pentru un set limitat de instrucțiuni în modul Intel, instruiește dezasamblatorul să imprime un sufix mnemonic chiar și atunci când sufixul ar putea fi dedus din operanzi sau, pentru anumite instrucțiuni, din valorile implicite ale modului de execuție.

Pentru PowerPC, argumentul -M raw selectează dezasamblarea inserțiilor hardware și nu a pseudonimelor. De exemplu, veți vedea "rlwinm" în loc de "clrlwi", și "addi" în loc de "li". Toate argumentele -m pentru gas care selectează un CPU sunt acceptate. Acestea sunt: 403, 405, 440, 464, 476, 601, 603, 604, 620, 7400, 7410, 7450, 7455, 750cl, 821, 850, 860, a2, booke, booke32, cell, com, e200z2, e200z4, e300, e500, e500mc, e500mc64, e500x2, e5500, e6500, efs, power4, power5, power6, power7, power8, power9, power10, power11, ppc, ppc32, ppc64, ppc64bridge, ppcps, pwr, pwr2, pwr4, pwr5, pwr5x, pwr6, pwr7, pwr8, pwr9, pwr10, pwr11, pwrx, titan, vle și future. 32 și 64 modifică selecția CPU implicită sau una anterioară, dezactivând și, respectiv, activând instrucțiunile pe 64 de biți. În plus, altivec, any, lsp, htm, vsx, spe și spe2 adaugă capacități la o selecție CPU anterioară sau ulterioară. any va dezasambla orice cod op cunoscut de binutils, dar în cazurile în care un cod op are două semnificații diferite sau argumente diferite, este posibil să nu vedeți dezasamblarea așteptată. Dacă dezasamblați fără a oferi o selecție CPU, se va alege o valoare implicită din informațiile obținute de BFD din anteturile fișierelor obiect, dar rezultatul poate să nu fie cel așteptat.

Pentru MIPS, această opțiune controlează imprimarea numelor mnemonice ale instrucțiunilor și a numelor registrelor în instrucțiunile dezasamblate. Se pot specifica mai multe selecții din următoarele opțiuni ca șir separat prin virgule, iar opțiunile nevalide sunt ignorate:

"no-aliases"
Imprimă instrucțiunea mnemonică „brută” în loc de o pseudo-instrucțiune mnemonică. De exemplu, imprimă „daddu” sau „or” în loc de „move”, „sll” în loc de„nop”, etc.
"msa"
Dezasamblează instrucțiunile MSA.
"virt"
Dezasamblează instrucțiunile ASE de virtualizare.
"xpa"
Dezasamblează instrucțiunile eXtended Physical Address (XPA) ASE.
"gpr-names=ABI"
Imprimă numele GPR (general-purpose register) în funcție de ABI-ul specificat. În mod implicit, numele GPR sunt selectate în funcție de ABI-ul binarului dezasamblat.
"fpr-names=ABI"
Imprimă numele FPR (registre în virgulă mobilă), după cum este adecvat pentru ABI-ul specificat. În mod implicit, sunt imprimate numerele FPR și nu numele.
"cp0-names=ARCH"
Imprimă numele registrelor CP0 (coprocesor de control al sistemului; coprocesor 0) în funcție de CPU sau arhitectura specificată de ARHITECTURA. În mod implicit, numele registrelor CP0 sunt selectate în funcție de arhitectura și CPU-ul binarului dezasamblat.
"hwr-names=ARCH"
Imprimă numele HWR (registru hardware, utilizat de instrucțiunea "rdhwr")) în funcție de CPU-ul sau arhitectura specificate de ARHITECTURA. În mod implicit, numele HWR sunt selectate în funcție de arhitectura și CPU-ul binarului dezasamblat.
"reg-names=ABI"
Imprimă numele GPR și FPR, după caz, pentru ABI-ul selectat.
"reg-names=ARCH"
Imprimă numele registrelor specifice CPU (registrul CP0 și numele HWR), după caz, pentru CPU-ul sau arhitectura selectată.

Pentru oricare dintre opțiunile enumerate mai sus, ABI sau ARHITECTURA pot fi specificate ca numeric pentru a imprima numere în loc de nume, pentru tipurile de registre selectate. Puteți lista valorile disponibile ale ABI și ARHITECTURA folosind opțiunea --help.

Pentru VAX, puteți specifica adresele de intrare a funcției cu -M entry:0xf00ba. Puteți utiliza acest lucru de mai multe ori pentru a dezasambla corect fișierele binare VAX care nu conțin tabele de simboluri (cum ar fi descărcările ROM). În aceste cazuri, masca de intrare a funcției ar fi decodificată altfel ca instrucțiuni VAX, ceea ce ar duce probabil la dezasamblarea greșită a restului funcției.

Afișează informații care sunt specifice formatului de fișier obiect. Informațiile exacte care se afișează depind de formatul fișierului obiect. Pentru unele formate de fișiere obiect, nu se afișează nicio informație suplimentară.
Afișează informații care sunt specifice formatului de fișier obiect. Argumentul opțiuni este o listă separată prin virgule care depinde de format (listele de opțiuni sunt afișate cu ajutorul lui „--help”).

Pentru XCOFF, opțiunile disponibile sunt:

"header"
"aout"
"sections"
"syms"
"relocs"
"lineno,"
"loader"
"except"
"typchk"
"traceback"
"toc"
"ldinfo"

Pentru PE, opțiunile disponibile sunt:

"header"
"sections"

Nu toate formatele de obiecte acceptă această opțiune. În special formatul ELF nu o utilizează.

Afișează intrările de realocare ale fișierului. Dacă se utilizează cu -d sau -D, realocările sunt imprimate intercalate cu dezasamblarea.
Afișează intrările de realocare dinamică ale fișierului. Acest lucru este semnificativ numai pentru obiectele dinamice, cum ar fi anumite tipuri de biblioteci partajate. Ca și pentru -r, dacă este utilizată cu -d sau -D, realocările sunt imprimate intercalate cu dezasamblarea.
Afișează conținutul complet al secțiunilor, adesea utilizată în combinație cu -j pentru a solicita secțiuni specifice. În mod implicit, sunt afișate toate secțiunile non-bss nevide. În mod implicit, orice secțiune comprimată va fi afișată în forma sa comprimată. Pentru a vedea conținutul într-o formă decomprimată, adăugați opțiunea -Z la linia de comandă.
Afișează codul sursă intercalat cu dezasamblarea, dacă este posibil. Implică -d.
La dezasamblare, afișează toate simbolurile care corespund unei anumite adrese, nu doar primul.
La fel ca opțiunea -S, dar toate liniile de cod sursă sunt afișate cu un prefix txt. De obicei, txt va fi un șir de comentarii care poate fi utilizat pentru a distinge codul de asamblare de codul sursă. Dacă txt nu este furnizat, se va utiliza un șir implicit de „# ” (simbolul hash urmat de un spațiu).
Specifică prefixul de adăugat la rutele absolute atunci când este utilizată cu -S.
Indică câte nume de directoare inițiale trebuie eliminate din rutele absolute integrate „hardwired”. Nu are niciun efect fără --prefix=prefix.
La dezasamblarea instrucțiunilor, imprimă instrucțiunea în format hexazecimal, precum și în formă simbolică. Aceasta este valoarea implicită, cu excepția cazului în care se utilizează --prefix-addresses.
La dezasamblarea instrucțiunilor, nu se imprimă octeții instrucțiunii. Aceasta este valoarea implicită atunci când se utilizează --prefix-addresses.
Afișează lățimea de octeți pe o singură linie la dezasamblarea instrucțiunilor.
Vizualizează salturile care rămân în interiorul unei funcții prin desenarea de grafică ASCII între adresele de pornire și de destinație. Argumentul opțional =color adaugă culoare la ieșire folosind culorile simple ale terminalului. Alternativ, argumentul =extended-color va adăuga culoare folosind culori pe 8 biți, dar acestea ar putea să nu funcționeze pe toate terminalele.

Dacă este necesar să dezactivați opțiunea visualize-jumps după ce aceasta a fost activată anterior, atunci utilizați visualize-jumps=off.

Activează sau dezactivează utilizarea evidențierii color a sintaxei în rezultatul dezasamblării. Comportamentul implicit este determinat prin intermediul unei opțiuni de configurare în timp. Rețineți că nu toate arhitecturile acceptă evidențierea colorată a sintaxei și, în funcție de terminalul utilizat, ieșirea colorată poate să nu fie lizibilă.

Argumentul on adaugă culori folosind culorile simple ale terminalului.

Argumentul terminal face același lucru, dar numai dacă dispozitivul de ieșire este un terminal.

Argumentul extended-color este similar cu argumentul on, dar utilizează culori pe 8 biți. Este posibil ca acestea să nu lucreze pe toate terminalele.

Argumentul off dezactivează dezasamblarea colorată.

Afișează conținutul secțiunilor de depanare DWARF din fișier, dacă sunt prezente. Secțiunile de depanare comprimate sunt decomprimate automat (temporar) înainte de a fi afișate. Dacă una sau mai multe litere sau cuvinte opționale urmează după opțiune, atunci vor fi descărcate numai acele tipuri de date. Literele și cuvintele se referă la următoarele informații:
"a"
"=abbrev"
Afișează conținutul secțiunii .debug_abbrev.
"A"
"=addr"
Afișează conținutul secțiunii .debug_addr.
"c"
"=cu_index"
Afișează conținutul secțiunilor .debug_cu_index și/sau .debug_tu_index.
"f"
"=frames"
Afișează conținutul brut al unei secțiuni .debug_frame.
"F"
"=frames-interp"
Afișează conținutul interpretat al unei secțiuni .debug_frame.
"g"
"=gdb_index"
Afișează conținutul secțiunilor .gdb_index și/sau .debug_names.
"i"
"=info"
Afișează conținutul secțiunii .debug_info. Notă: ieșirea rezultată din această opțiune poate fi, de asemenea, restricționată prin utilizarea opțiunilor --dwarf-depth și --dwarf-start.
"k"
"=links"
Afișează conținutul secțiunilor .gnu_debuglink, .gnu_debugaltlink și .debug_sup, în cazul în care oricare dintre ele este prezentă. Afișează, de asemenea, toate legăturile către fișiere de obiecte dwarf separate (dwo), dacă acestea sunt specificate prin atributele DW_AT_GNU_dwo_name sau DW_AT_dwo_name din secțiunea .debug_info.
"K"
"=follow-links"
Afișează conținutul tuturor secțiunilor de depanare selectate care se găsesc în fișiere de informații de depanare separate și legate. Acest lucru poate avea ca rezultat afișarea mai multor versiuni ale aceleiași secțiuni de depanare, dacă aceasta există în mai multe fișiere.

În plus, atunci când se afișează atributele DWARF, în cazul în care se găsește un formular care face trimitere la un fișier de informații de depanare separat, atunci va fi afișat și conținutul la care se face referire.

Notă - în unele distribuții, această opțiune este activată în mod implicit. Ea poate fi dezactivată prin intermediul opțiunii de depanare N. Valoarea implicită poate fi aleasă la configurarea binutils prin intermediul opțiunilor --enable-follow-debug-links=yes sau --enable-follow-debug-links=no. Dacă acestea nu sunt utilizate, atunci opțiunea implicită este de a activa urmărirea legăturilor de depanare.

Notă - dacă suportul pentru protocolul debuginfod a fost activat atunci când binutils a fost construit, atunci această opțiune va include, de asemenea, o încercare de a contacta orice server debuginfod menționat în variabila de mediu DEBUGINFOD_URLS. Rezolvarea acestei probleme ar putea dura ceva timp. Acest comportament poate fi dezactivat prin intermediul opțiunii de depanare =do-not-use-debuginfod.

"N"
"=no-follow-links"
Dezactivează urmărirea legăturilor către fișiere de informații de depanare separate.
"D"
"=use-debuginfod"
Activează contactarea serverelor de depanare în cazul în care este necesar să se urmeze legături de depanare. Acesta este comportamentul implicit.
"E"
"=do-not-use-debuginfod"
Dezactivează contactarea serverelor de depanare atunci când este necesar să se urmărească legături de depanare.
"l"
"=rawline"
Afișează conținutul secțiunii .debug_line într-un format brut.
"L"
"=decodedline"
Afișează conținutul interpretat al secțiunii .debug_line.
"m"
"=macro"
Afișează conținutul secțiunilor .debug_macro și/sau .debug_macinfo.
"o"
"=loc"
Afișează conținutul secțiunilor .debug_loc și/sau .debug_loclists.
"O"
"=str-offsets"
Afișează conținutul secțiunii .debug_str_offsets.
"p"
"=pubnames"
Afișează conținutul secțiunilor .debug_pubnames și/sau .debug_gnu_pubnames.
"r"
"=aranges"
Afișează conținutul secțiunii .debug_aranges.
"R"
"=Ranges"
Afișează conținutul secțiunilor .debug_ranges și/sau .debug_rnglists.
"s"
"=str"
Afișează conținutul secțiunilor .debug_str, .debug_line_str și/sau .debug_str_offsets.
"t"
"=pubtype"
Afișează conținutul secțiunilor .debug_pubtypes și/sau .debug_gnu_pubtypes.
"T"
"=trace_aranges"
Afișează conținutul secțiunii .trace_aranges.
"u"
"=trace_abbrev"
Afișează conținutul secțiunii .trace_abbrev.
"U"
"=trace_info"
Afișează conținutul secțiunii .trace_info.

Notă: afișarea conținutului secțiunilor .debug_static_funcs, .debug_static_vars și debug_weaknames nu este acceptată în prezent.

Limitează extragerea secțiunii „.debug_info” la n copii. Acest lucru este util numai cu --debug-dump=info. Valoarea implicită este de a imprima toate DIE-urile; valoarea specială 0 pentru n va avea, de asemenea, acest efect.

Cu o valoare diferită de zero pentru n, nu se afișează DIE-uri la niveluri mai mari sau mai adânci decât n. Intervalul pentru n este bazat pe zero.

Afișează numai DIE-urile care încep cu DIE numerotate n. Acest lucru este util numai cu --debug-dump=info.

Dacă este specificată, această opțiune va suprima afișarea oricăror informații de antet și a tuturor DIE-urilor înainte de DIE numerotate n. Vor fi afișați numai frații și copiii DIE specificați.

Aceasta poate fi utilizată împreună cu --dwarf-depth.

Activează verificări suplimentare pentru coerența informațiilor Dwarf.
Afișează conținutul secțiunii CTF specificate. Secțiunile CTF conțin la rândul lor numeroase subsecțiuni, toate fiind afișate în ordine.

În mod implicit, afișează numele secțiunii numite .ctf, care este numele emis de ld.

În cazul în care secțiunea CTF conține tipuri definite în mod ambiguu, aceasta va consta într-o arhivă de mai multe dicționare CTF, toate moștenind dintr-un dicționar care conține tipuri neechivoce. Acest membru se numește în mod implicit .ctf, la fel ca secțiunea care îl conține, dar este posibil să se schimbe acest nume folosind funcția "ctf_link_set_memb_name_changer" în momentul realizării legăturii. Atunci când se examinează arhivele CTF care au fost create de un editor de legături care utilizează funcția de schimbare a numelui pentru a redenumi membrul arhivei părinte, se poate utiliza --ctf-parent pentru a specifica numele utilizat pentru membrul părinte.
Această opțiune vă permite să alegeți o secțiune complet diferită pentru dicționarul părinte CTF care conține tipuri neambigue decât pentru dicționarele copil care conțin restul ambiguu. Editorul de legături nu emite obiecte ELF structurate astfel, dar unii editori de legături de la terți pot emite astfel de obiecte. De asemenea, este convenabil să inspectați CTF scris ca mai multe fișiere brute pentru a le compune cu objcopy, care le poate pune în secțiuni ELF diferite, dar nu în membri diferiți ai unui singur dicționar CTF.
Afișează conținutul secțiunii SFrame specificate.

În mod implicit, se afișează numele secțiunii numite .sframe, care este numele emis de ld.

Afișează conținutul complet al oricărei secțiuni solicitate. Afișează conținutul secțiunilor .stab și .stab.index și .stab.excl dintr-un fișier ELF. Această opțiune este utilă numai pe sisteme (cum ar fi Solaris 2.0) în care ".stab" intrările tabelei de simboluri de depanare sunt incluse într-o secțiune ELF. În majoritatea celorlalte formate de fișiere, intrările din tabelul de simboluri de depanare sunt intercalate cu simbolurile de legătură și sunt vizibile în ieșirea --syms.
Începe afișarea datelor la adresa specificată. Aceasta afectează ieșirea opțiunilor -d, -r și -s.
Oprește afișarea datelor la adresa specificată. Aceasta afectează ieșirea opțiunilor -d, -r și -s.
Afișează intrările din tabelul de simboluri al fișierului. Aceasta este similară cu informațiile furnizate de programul nm, deși formatul de afișare este diferit. Formatul de ieșire depinde de formatul fișierului care este descărcat, dar există două tipuri principale. Unul arată astfel:

 [ 4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss  [ 6](sec
1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 fred
    

unde numărul din interiorul parantezelor drepte este numărul intrării din tabelul de simboluri, numărul sec este numărul secțiunii, valoarea fl sunt biții fanionului simbolului, numărul ty este tipul simbolului, numărul scl este clasa de stocare a simbolului și valoarea nx este numărul de intrări auxiliare asociate simbolului. Ultimele două câmpuri sunt valoarea simbolului și numele acestuia.

Celălalt format de ieșire comun, întâlnit de obicei cu fișierele bazate pe ELF, arată astfel:

 00000000 l d .bss 00000000 .bss  00000000 g .text 00000000 fred
    

Aici, primul număr este valoarea simbolului (uneori denumită adresa acestuia). Următorul câmp este de fapt un set de caractere și spații care indică biții fanionului care sunt activați pe simbol. Aceste caractere sunt descrise mai jos. Urmează secțiunea cu care este asociat simbolul sau *ABS* dacă secțiunea este absolută (adică nu este legată de nicio secțiune), sau *UND* dacă secțiunea este menționată în fișierul care face obiectul descărcării, dar nu este definită acolo.

După numele secțiunii urmează un alt câmp, un număr, care pentru simbolurile comune este alinierea, iar pentru alte simboluri este dimensiunea. La sfârșit este afișat numele simbolului.

Caracterele fanionului sunt împărțite în 7 grupuri, după cum urmează:

"l"
"g"
"u"
"!"
Simbolul este local (l), global (g), global unic (u), nici global, nici local (un spațiu) sau atât global, cât și local (!). Un simbol poate fi nici local, nici global dintr-o varietate de motive, de exemplu, pentru că este utilizat pentru depanare, dar este probabil un indiciu al unei erori dacă este vreodată atât local, cât și global. Simbolurile globale unice sunt o extensie GNU la setul standard de legături de simboluri ELF. Pentru un astfel de simbol, editorul de legături dinamice se va asigura că în întregul proces este utilizat un singur simbol cu acest nume și tip.
"w"
Simbolul este slab (w) sau forte (un spațiu).
"C"
Simbolul denotă un constructor (C) sau un simbol obișnuit (un spațiu).
"W"
Simbolul este un avertisment (W) sau un simbol normal (un spațiu). Numele unui simbol de avertizare este un mesaj care urmează să fie afișat dacă simbolul care urmează simbolului de avertizare este vreodată menționat.
"I"
"i"
Simbolul este o referință indirectă la un alt simbol (I), la o funcție care urmează să fie evaluată în timpul procesării realocării (i) sau la un simbol normal (un spațiu).
"d"
"D"
Simbolul este un simbol de depanare (d) sau un simbol dinamic (D) sau un simbol normal (un spațiu).
"F"
"f"
"O"
Simbolul este numele unei funcții (F) sau al unui fișier (f) sau al unui obiect (O) sau doar un simbol normal (un spațiu).
Imprimă intrările din tabelul de simboluri dinamice al fișierului. Acest lucru este semnificativ numai pentru obiectele dinamice, cum ar fi anumite tipuri de biblioteci partajate. Aceasta este similară cu informațiile furnizate de programul nm atunci când i se dă opțiunea -D (--dynamic).

Formatul de ieșire este similar cu cel produs de opțiunea --syms, cu excepția faptului că înainte de numele simbolului este inserat un câmp suplimentar, care oferă informații despre versiunea asociată simbolului. Dacă versiunea este versiunea implicită care urmează să fie utilizată la rezolvarea referințelor fără versiune „unversioned ” la simbol, atunci este afișată așa cum este, altfel este pusă între paranteze.

La afișarea simbolurilor, include simbolurile pe care ținta le consideră a fi speciale într-un anumit fel și care, în mod normal, nu ar fi de interes pentru utilizator.
Controlează afișarea caracterelor multi-octet codificate UTF-8 în șiruri de caractere. În mod implicit (--unicode=default), acestea nu beneficiază de un tratament special. Opțiunea --unicode=locale afișează secvența în limba locală curentă, care poate să le suporte sau nu. Opțiunile --unicode=hex și --unicode=invalid le afișează sub formă de secvențe de octeți hexazecimali, încadrate fie de paranteze unghiulare, fie de paranteze drepte.

Opțiunea --unicode=escape le afișează ca secvențe de eludare (\uxxxx), iar opțiunea --unicode=highlight le afișează ca secvențe de eludare evidențiate cu roșu (dacă sunt acceptate de dispozitivul de ieșire). Culoarea are rolul de a atrage atenția asupra prezenței secvențelor unicode acolo unde nu ar fi de așteptat.

Afișează numărul versiunii lui objdump și iese.
Afișează toate informațiile de antet disponibile, inclusiv tabelul de simboluri și intrările de realocare. Utilizarea -x este echivalentă cu specificarea tuturor opțiunilor -a -f -h -p -r -t.
Formatează unele linii pentru dispozitivele de ieșire care au mai mult de 80 de coloane. De asemenea, nu trunchează numele simbolurilor atunci când acestea sunt afișate.
În mod normal, rezultatul dezasamblării va omite blocurile de zerouri. Această opțiune direcționează dezasamblatorul să dezasambleze aceste blocuri, la fel ca orice alte date.
Opțiunea -Z este menită să fie utilizată în combinație cu opțiunea -s. Aceasta instruiește objdump să decomprime orice secțiune comprimată înainte de a afișa conținutul acesteia.
@fișier
Citește opțiunile liniei de comandă din fișier. Opțiunile citite sunt inserate în locul opțiunii originale @fișier. Dacă fișier nu există sau nu poate fi citit, atunci opțiunea va fi tratată literal și nu va fi eliminată.

Opțiunile din fișier sunt separate prin spații albe. Un caracter de spațiere poate fi inclus într-o opțiune prin includerea întregii opțiuni între ghilimele simple sau duble. Orice caracter (inclusiv o bară oblică inversă) poate fi inclus prin prefixarea caracterului care urmează să fie inclus cu o bară oblică inversă. fișier poate conține la rândul său opțiuni @fișier suplimentare; orice astfel de opțiuni vor fi procesate în mod recursiv.

CONSULTAȚI ȘI

nm(1), readelf(1), and the Info entries for binutils.

DREPTURI DE AUTOR

Drepturi de autor © 1991-2025 Free Software Foundation, Inc.

Se acordă permisiunea de a copia, distribui și/sau modifica acest document în conformitate cu termenii Licenței GNU Free Documentation, versiunea 1.3 sau orice versiune ulterioară publicată de Free Software Foundation; fără secțiuni invariante, fără texte de copertă și fără texte de contra copertă. O copie a licenței este inclusă în secțiunea intitulată „GNU Free Documentation License”.

TRADUCERE

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

19 februarie 2025 binutils-2.44