标签:
# arg.s .section .text .globl _start _start: nop movl $1, %eax movl $0, %ebx int $0x80
(gdb) r 100 101 102 #运行时带入三个参数 Starting program: /home/allen/as/i_arg/arg 100 101 102 Breakpoint 1, _start () at arg.s:5 5 nop (gdb) s 6 movl $1, %eax (gdb) print $esp #打印堆栈栈顶地址 $1 = (void *) 0xbffff3d0 (gdb) x/20x 0xbffff3d0 #查看堆栈向上20个地址的数据,其中第一个数据为命令行参数的个数,后面紧接着 0xbffff566 0xbffff57f 0xbffff583 0xbffff587为命令行参数的参数的地址(gdb) r 100 101 102 0xbffff3d0: 0x00000004 0xbffff566 0xbffff57f 0xbffff583 0xbffff3e0: 0xbffff587 0x00000000 0xbffff58b 0xbffff5ac 0xbffff3f0: 0xbffff5cb 0xbffff5ec 0xbffff5fc 0xbffff607 0xbffff400: 0xbffff615 0xbffff666 0xbffff6a0 0xbffff6b2 0xbffff410: 0xbffff6c8 0xbffff6e6 0xbffff6fd 0xbffff708 (gdb) x/d ($esp) 0xbffff3d0: 4 (gdb) x/s 0xbffff566 # 参数为程序名称 0xbffff566: "/home/allen/as/i_arg/arg" (gdb) x/s 0xbffff57f #查看第一个参数内存地址内的内容 0xbffff57f: "100" (gdb) x/s 0xbffff583 #查看第二个参数内存地址内的内容 0xbffff583: "101" (gdb) x/s 0xbffff587 #查看第三个参数内存地址内的内容 0xbffff587: "102" (gdb)
标签:
原文地址:http://blog.csdn.net/shallnet/article/details/45625211