Varför kan jag inte direkt få innehållet i avsnittet `.bss`?

Testet är på Linux 32bit.

Jag använder det här kommandot för att få sammanhanget för .text .rodata och .data avsnitt:

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

Men i princip när jag försökte använda detta för att få innehållet i .bss avsnittet får jag alltid felet som visas nedan:

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

Hur kan jag i princip få innehållet från .bss -avsnitt från ELF-binär?

Svar

.bss har inget innehåll. Det är helt enkelt ett tips till lastaren att förloka lite utrymme när du startar programmet. Det kommer att vara alla 0 vid körningen och kommer inte att innehålla någon användbar information tills programmet skriver till det. Därefter kan du använda en felsökare för att dumpa minnet och utforska dess innehåll.

Kontrollera Wikipedia sidan för mer information.

Svar

.bss block startat med symbol ( även kallat oinitialiserat datasegment – bss är en gammal monteringsinstruktion på ett gammalt IBM-chip) avsnitt ska innehålla global variables och static variables oinitialiserat eller initialiserat till 0 eller NULL. Avsnittet .bss finns vanligtvis inte förrän ditt program börjar köras, det är därför du inte kan hämta innehållet statiskt. Det är ganska viktigt att notera att detta avsnitt hjälper till att minska programmet” s storlek & gör det snabbare att ladda.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *