Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1799100
  • 博文数量: 600
  • 博客积分: 10581
  • 博客等级: 上将
  • 技术积分: 6205
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-06 10:13
文章分类
文章存档

2016年(2)

2015年(9)

2014年(8)

2013年(5)

2012年(8)

2011年(36)

2010年(34)

2009年(451)

2008年(47)

分类:

2009-10-11 14:53:55

main()
{  int   i=10 ,*p1;
   float j=1.5,*p2;
   p1=&i;
   p2=&j;
   p2=p1;
   printf("%d,%d\n",*p1,*p2);
}
首先带上-g参数编译  cc -g -o t t.c
启动调试器          dbxtra t
屏幕显示:
1.main()
2.{  int   i=10 ,*p1;
3.   float j=1.5,*p2;
4.   p1=&i;
5.   p2=&j;
6.   p2=p1;
7.   printf("%d,%d\n",*p1,*p2);
8.}
C[browse] File:t.c    Func.-   
 Readubg symbolic information
 Type    'help' for help
(dbxtra)
(dbxtra)
设置断点:
(dbxtra)stop at 5
运行:
(dbxtra) run
程序自动在第5行停下。
这时我们可以看变量的值。
(dbxtra) print *p1
单步执行。
(dbxtra)  step
程序将执行第5行源码,指针将移到第6行。
(dbxtra)  print *p2
(dbxtra) step
程序执行了第6行源码后,将指针移到第7行。
(dbxtra) print *p1 , *p2  我们发现
在执行了第6行源码后,*p1,*p2的值就不对了,所以问题就出在第6行上。仔细检查后发现指针p1指向整型,指针p2指向实型。它们之间的赋值要进行强制类型转换。这种错误在C程序中是很常见的。
 
阅读(652) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~