Miksi en voi hakea suoraan .bss-osan sisältöä?

Testi on 32-bittisellä Linuxilla.

Tämän komennon avulla haen kontekstin .text .rodata ja .data -osio:

objdump -s -j .text elf_binary objdump -s -j .rodata elf_binary objdump -s -j .data elf_binary 

Mutta periaatteessa kun yritin käyttää tätä saadaksesi .bss -osion sisällön, saan aina alla olevan virheen:

objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file 

Pohjimmiltaan miten saan .bss -osion sisällön ELF-binaarista?

Vastaa

.bss -palvelussa ei ole sisältöä. Se on yksinkertaisesti vihje latauslaitteelle varaamaan tilaa uudelleen ohjelman käynnistämisen yhteydessä. Suorituksessa on kaikki nollat ja siinä ei ole mitään hyödyllistä tietoa, ennen kuin ohjelma kirjoittaa siihen. Tämän jälkeen voit käyttää virheenkorjainta muistin tyhjentämiseen ja sen sisällön tutkimiseen.

Katso lisätietoja Wikipedia -sivulta .

Vastaus

.bss -lohko, jonka aloitti symboli ( kutsutaan myös alustamattomaksi tietosegmentiksi – bss on vanha kokoonpanokäsky muinaiselle IBM-sirulle) -osion on tarkoitus sisältää global variables ja static variables ei alustettu tai alustettu arvoon 0 tai NULL. .bss -osaa ei yleensä ole olemassa, kunnes ohjelma käynnistyy, siksi et voi ”noutaa sen sisältöä staattisesti. On melko tärkeää huomata, että tämä osio auttaa vähentämään ohjelmaa” s koon & ansiosta lataaminen on nopeampaa.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *