打印

关于使用keil软件调试c语言编写的arm程序的断点设置问题

[复制链接]
3333|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zdl123|  楼主 | 2007-10-10 15:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于使用keil软件调试c语言编写的arm程序的问题

    请教:使用keil软件调试c语言编写的arm程序,由于arm的汇编语句带有条件执行功能,使得在c语言的条件转移仿真时无法设定断点,因为,无论如何设置,程序都会按顺序走一遍语句。比如程序:
 if(a>1)
{
   b = 2;
   c =3;
   d = b+c;
}
else
   d = 9;

    一般认为,如果a=1,不满足条件,程序不会进入括号内部执行。但由于arm的汇编语句带有条件执行功能,似乎是由于流水线的顺序执行提高了效率,但是问题也来了。可能是效率提高了,但是我们调试程序时,要考核程序在不同的条件下的行为,比如a>1,可是a<=1时,程序也会到括号内部执行一圈,虽然不会真正执行里边的程序。这就导致无法设置需要的断点,因此,也无法考核程序的行为。
    不知各位过来人是如何解决此类问题的?请指教。

相关帖子

沙发
zdl123|  楼主 | 2007-10-12 18:00 | 只看该作者

自己顶一下

难道各位先学没遇到这样的问题吗?不可能吧。也许说得不够清楚,就是说:
你认为条件内部不满足条件要求的地方设了一个断点,但程序却在if内部每一条个语句上判断一下条件是否满足才确定该语句是否执行,而不是在条件语句处(如if).结果是:不管是if还是else统统判断一遍。if和else成了摆设。
调试程序时这宗现象如何解决?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

1

粉丝