LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 811|回复: 5

问个基础的问题.

[复制链接]
发表于 2003-8-2 22:29:39 | 显示全部楼层 |阅读模式
不要笑我哈 :p
在用gdb调试的时候打印栈的情况

  1. (gdb) list
  2. 1       #include <stdio.h>
  3. 2       #include "reciprocal.hpp"
  4. 3
  5. 4       int main (int argc,char **argv)
  6. 5       {
  7. 6         int i;
  8. 7
  9. 8         i = atoi (argv[1]);
  10. 9         printf ("The reciprocal of %d is %f\n",i,reciprocal (i));
  11. 10        return 0;
  12. (gdb) break 8
  13. Breakpoint 1 at 0x80483f8: file main.c, line 8.
  14. (gdb) run
  15. Starting program: /root/program/linuxfire/reciprocal
  16. Breakpoint 1, main (argc=1, argv=0xbffff144) at main.c:8
  17. 8         i = atoi (argv[1]);
  18. (gdb) where
  19. #0  main (argc=1, argv=0xbffff144) at main.c:8
  20. #1  0x420158f7 in __libc_start_main () from /lib/i686/libc.so.6
复制代码

请问:
1:Breakpoint 1 at 0x80483f8: file main.c, line 8.
  这里 0x80483f8表示的是cs与ip的情况吗?我想知道这个时候CS,IP两个寄存器里面的内容是什么,怎么看?
2gdb) where
#0  main (argc=1, argv=0xbffff144) at main.c:8
#1  0x420158f7 in __libc_start_main () from /lib/i686/libc.so.6
在这个栈情况输出中 argv=0xbffff144中的0xbffff144是什么意思.
发表于 2003-8-2 23:27:20 | 显示全部楼层
0x80483f8是地址。argv=0xbffff144中的0xbffff144是argv的值,实际上也是地址。
 楼主| 发表于 2003-8-2 23:36:42 | 显示全部楼层
X号前后的数字表示什么?
是不是寄存器的值?0代表什么?80483f8代表的又是什么?
发表于 2003-8-2 23:40:06 | 显示全部楼层
你没有学过C语言吗?0x打头的数字表示16进制,这可是教材必讲的内容呀。
 楼主| 发表于 2003-8-2 23:43:41 | 显示全部楼层
呵呵,当时这个没在意.
那么怎么显示段寄存器的内容呢?我想确定物理地址.
发表于 2003-8-3 08:11:00 | 显示全部楼层
去看看置顶的贴子。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表