日期:2014-05-16  浏览次数:20623 次

查看内存程序问题
是用 gdb 还是 objdump 工具能看程序的内存布局呢 如我的程序是这样的 

C/C++ code

.globl _start
_start:
    lidt    idt_48        ! load idt with 0,0
    lgdt    gdt_48        ! load gdt with whatever appropriate
    
gdt:
    .word    0,0,0,0        ! dummy

    .word    0x07FF        ! 8Mb - limit=2047 (2048*4096=8Mb)
    .word    0x0000        ! base address=0
    .word    0x9A00        ! code read/exec
    .word    0x00C0        ! granularity=4096, 386

    .word    0x07FF        ! 8Mb - limit=2047 (2048*4096=8Mb)
    .word    0x0000        ! base address=0
    .word    0x9200        ! data read/write
    .word    0x00C0        ! granularity=4096, 386

idt_48:
    .word    0            ! idt limit=0
    .word    0,0            ! idt base=0L

gdt_48:
    .word    0x800        ! gdt limit=2048, 256 GDT entries
    .word    512+gdt,0x9    ! gdt base = 0X9xxx



我用 as 和 ld 生成了一个 test.o test文件  

我想看看 代码段 和数据段在内存中的布局 这两个工具怎么用呢 谢谢  

比如:
内存地址 16进制 汇编
0x0000000 0x00000 gdt:
..................................
..................................  
0x1000000 0x00000 lidt idt_48

把整个程序显示出来 

其实就想看看 代码段 和数据段在内存中的布局 谢谢了

------解决方案--------------------
cat /proc/<pid of program>/maps


------解决方案--------------------
size -A -x
objdump -x
readelf -e

看看哪个符合你要求