论坛风格切换切换到宽版
  • 3510阅读
  • 4回复

请教c语言中用keil进行调试的问题 [复制链接]

上一主题 下一主题
离线BG4ABM
 
发帖
1139
只看楼主 倒序阅读 0楼 发表于: 2007-06-07
我原来一直是用汇编的,很喜欢用keil中的单步运行来调试程序,现在开始学习用c来写程序,发现c的单步运行和和汇编的不一样,往往会将一些变量的中间结果也显示出来,使我无法判断程序的对错,请问各位高手,你们在调试程序时是如何解决这个问题的?

你们可以试试下面这个程序,编译后单步运行,观察temp的值,应该是只会出现64005,500,50这3个数,但实际运行时还会出现244这个数。
#include<reg51.h>
unsigned int temp;

void main(void)
{
while(1)
{
temp=255*251;
temp=temp/128;
temp=temp/10;
}
}
离线1a2b3c
发帖
204
只看该作者 1楼 发表于: 2007-06-07
我没有去试,你单步是c中单步还是反汇编中单步,如果是后者那么是完全可能的,因为可能刚好运行到整数乘除法的中间过程。c中单步我想应该不会出现这个。
离线BG4ABM
发帖
1139
只看该作者 2楼 发表于: 2007-06-07
当然是在c中单步运行
离线BG4ABM
发帖
1139
只看该作者 3楼 发表于: 2007-06-07
后来又试了试,发现不光是出现244这个数,还会出现其它数,需要象附图那样设置断点,然后全速运行,就可以看到这些数字了
离线firetiger
只看该作者 4楼 发表于: 2007-07-09
类型不匹配,溢出了。