Objdump Linux -kommandoen

Objdump Linux -kommandoen

“Objdump er et kommandolinjeverktøy som brukes til å vise informasjon om et objekt på Unix-lignende systemer. Kommandoen, når den brukes, får informasjon om en objektfil selv når du ikke har kildekoden. Derfor kan det være et feilsøkingsverktøy for objektfiler, spesielt når du jobber med kompilatorprogrammer.”

Denne guiden dekker de forskjellige bruksområdene til Objdump -kommandoen med eksempler. Sjekk det ut.

Bruk av Objdump -kommandoen

Objdump har 6 hovedformål:

  • Å feilsøke objektfilen
  • Hente filoverskrifter
  • Få bfdname
  • Henter arkivhodet
  • Få forskyvninger av en fil
  • Demontering av en objektfil

Dens grunnleggende syntaks er:

$ objdump

Det er mange alternativer å bruke med Objdump -kommandoen, og du kan se hjelpesiden for å se dem.

$ objdump -hjelp

Denne artikkelen vil bruke /bin /ekkoet som vår objektfil for eksemplene våre. Du kan imidlertid bruke andre objektfiler som C -programmer. Bruken er fremdeles den samme.

Jobber med Objdump

Vis filoverskrifter av objektfilen

Alternativet -F, når det brukes med Objdump -kommandoen, henter alle filoverskriftene tilknyttet en gitt objektfil, som vist nedenfor. Husk at vi bruker /bin /ekkoet, som er en binær kjørbar fil for Echo -kommandoen som vårt objekt i dette tilfellet.

$ objdump -f /bin /ekko

Den resulterende utdata som viser filoverskriftene vil være:

Du kan merke objektfilens format og overskrifter fra utdataene.

For å få de objektspesifikke filoverskriftene

Hvis du trenger å vise spesifikke filoverskrifter for objektfilen du bruker, bruker du -p -alternativet.

$ objdump -p /bin /ekko

Vis seksjonsoverskriftsinnhold

Hver fil har forskjellige seksjonsoverskrifter. Hvis du trenger å vise innholdet i hver av seksjonsoverskriftene, bruker du alternativet -h -alternativet.

$ objdump -h /bin /ekko

I dette tilfellet var utgangen:

Fra utdataene kan du legge merke til at de forskjellige seksjonsoverskriftene er nummerert fra 1, og hver seksjonshode har sin størrelse, VMA, LMA, File Off og ALGN.

Størrelse: representerer størrelsen på seksjonen lastet.

VMA: representerer den virtuelle minneadressen

LMA: representerer den logiske minneadressen

Fil av: representerer seksjonens forskyvning fra starten av filen.

Algn: representerer innretningen av seksjonen.

De andre detaljene, for eksempel alloc, data, readonly og innhold, er de forskjellige flaggene som representerer hvis seksjonen er readonly eller er lastet.

Vis informasjon om alle overskrifter

Du kan også få all informasjonen om overskriftene i objektfilen. For å gjøre dette, bruk -x -alternativet.

$ objdump -x /bin /ekko

I dette eksemplet vil den delvise utgangen for kommandoen ovenfor være:

For å få den kjørbare seksjonens samlerinnhold

For å få den kjørbare seksjonens monteringsinnhold, bruk -d -alternativet.

$ objdump -d /bin /ekko

I dette eksemplet er den delvise utgangen:

Utgangen blir delt inn i kjørbare seksjoner, og for hver vises dens monteringsinnhold som vist som vist. For eksempel kan du se seksjonen ".init ”og den tilsvarende samlerinnholdet under den før du fortsetter til neste kjørbare del av objektfilen.

Få samlerinnhold i hver seksjon

-Den viser bare monteringsinnholdet i de kjørbare seksjonene. Bruk imidlertid alternativet for D-d hvis du trenger innholdet for alle filseksjoner.

$ objdump -d /bin /ekko

For å få alt innhold i alle seksjoner

For dette, bruk -s -alternativet

$ objdump -s /bin /ekko

Utgangen for alle seksjoner og innholdet deres vil være:

Vis feilsøkingsinformasjon

Alternativet -g viser all tilgjengelig feilsøkingsinformasjon i objektfilen.

$ objdump -g /bin /ekko

Vis innhold i symboltabellen

Hvis objektfilen har en symboltabell, kan du vise innholdet ved hjelp av -t -alternativet

$ objdump -t /bin /ekko

Konklusjon

En Objdump -kommando er et nyttig verktøy for programmerere som takler kompilatorer. Kommandoen har flere bruksområder, og vi har dekket det vanligste eksemplet Bruk. Du kan også sjekke mannssiden for mer informasjon om hvordan du kan bruke verktøyet. Videre kan kommandoen bli litt overveldende. Så fortsett å øve på det mer. Beste ønsker!