原创
函数调用时的栈信息
2013-2-20 19:59
757
14
14
分类:
消费电子
在看到《C专家编程》中关于运行时的数据结构这一节时,
使用gdb测试的一个小程序,
观察函数调用时栈的排列帮助理解。
..............
214 804843d: e8 82 ff ff ff call 80483c4 <add>
215 8048442: 89 45 fc mov %eax,-0x4(%ebp)
........
250 804847c: e8 8f ff ff ff call 8048410 <b>
251 8048481: a3 30 97 04 08 mov %eax,0x8049730
.............
281 80484c7: e8 7e ff ff ff call 804844a <a>
282
283 return 0;
284 80484cc: b8 00 00 00 00 mov $0x0,%eax
堆栈情况:
(gdb) p &p
$14 = (char **) 0xbffff400
(gdb) x/8 0xbffff430
0xbffff430: 0x00000001 0x00000002 0x00000003 0x00000004
0xbffff440: 0x080496fc 0x080496fd 0xbffff458 0x080484a4
(gdb) x/32 0xbffff3f0
0xbffff3f0: 0x00000000 0xbffff418 0x08048442 0x00000000
0xbffff400: 0xbffff430 0x0000001e 0x00000000 0x00000000
0xbffff410: 0x00000000 0x00000000 0xbffff448 0x08048481
0xbffff420: 0xbffff430 0x00000000 0x00000000 0x009c08ab
0xbffff430: 0x00000001 0x00000002 0x00000003 0x00000004
0xbffff440: 0x0804971c 0x0804971d 0xbffff458 0x080484cc
0xbffff450: 0x009ce6d0 0xbffff470 0xbffff4c8 0x009f96d5
0xbffff460: 0x080484f0 0x08048310 0xbffff4c8 0x009f96d5
(gdb) p __libc_start_main
$3 = {<text variable, no debug info>} 0x9f95f0 <__libc_start_main>
文章评论(0条评论)
登录后参与讨论