Miért nem tudom közvetlenül megszerezni a `.bss szakasz tartalmát?

A teszt 32 bites Linux rendszeren van.

Ezt a parancsot használom a .text .rodata és .data szakasz:

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

De alapvetően amikor megpróbáltam ezt használni az .bss szakasz tartalmának megszerzéséhez, mindig az alább látható hibát kapom:

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

Alapvetően hogyan tudom megszerezni az .bss szakasz tartalmát az ELF bináris fájlból?

Válasz

A .bss nem tartalmaz tartalmat. Ez egyszerűen egy tipp a betöltőnek, hogy előre foglaljon helyet a program indításakor. A végrehajtáskor mind 0 lesz, és addig nem tárol semmilyen hasznos információt, amíg a program nem ír neki. Ezt követően egy hibakeresővel használhatja a memória kiürítését és tartalmának felfedezését.

További információkért ellenőrizze a Wikipedia oldalt .

Válasz

A .bss szimbólum által indított blokk ( Inicializálatlan adatszegmensnek is nevezik – bss egy régi szerelési utasítás egy ősi IBM chipen) szakasznak állítólag tartalmaznia kell: global variables és static variables nem inicializálva vagy inicializálva 0 vagy NULL értékre. A .bss szakasz általában nem létezik, amíg a program nem kezdi el a végrehajtást, ezért “nem lehet statikusan lekérni a tartalmát. Elég fontos megjegyezni, hogy ez a szakasz segít csökkenteni a programot” Az & méret gyorsabbá teszi a betöltést.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük