Warum kann ich den Inhalt des Abschnitts „.bss“ nicht direkt abrufen?

Test ist unter Linux 32bit.

Ich verwende diesen Befehl, um den Kontext von .text .rodata und .data Abschnitt:

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

Aber im Grunde Wenn ich versucht habe, den Inhalt des Abschnitts .bss abzurufen, wird immer der folgende Fehler angezeigt:

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

Wie kann ich den Inhalt des Abschnitts .bss aus der ELF-Binärdatei abrufen?

Antwort

Die .bss hat keinen Inhalt. Es ist einfach ein Tipp für den Loader, beim Starten des Programms etwas Speicherplatz vorzuweisen. Bei der Ausführung werden alle Nullen angezeigt, und es werden keine nützlichen Informationen gespeichert, bis das Programm darauf schreibt. Danach können Sie einen Debugger verwenden, um den Speicher zu sichern und seinen Inhalt zu untersuchen.

Weitere Informationen finden Sie auf der Wikipedia-Seite .

Antwort

Der Block .bss wird mit dem Symbol ( Auch als nicht initialisiertes Datensegment bezeichnet – bss ist eine alte Montageanweisung auf einem alten IBM-Chip.) Abschnitt soll global variables und static variables nicht initialisiert oder auf 0 oder NULL initialisiert. Der Abschnitt .bss ist normalerweise erst vorhanden, wenn Ihr Programm ausgeführt wird. Aus diesem Grund können Sie den Inhalt nicht statisch abrufen. Es ist ziemlich wichtig zu beachten, dass dieser Abschnitt zur Reduzierung des Programms beiträgt. s Größe & beschleunigt das Laden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.