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

[复制链接]
 楼主| zdl123 发表于 2007-10-10 15:42 | 显示全部楼层 |阅读模式
关于使用keil软件调试c语言编写的arm程序的问题<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;请教:使用keil软件调试c语言编写的arm程序,由于arm的汇编语句带有条件执行功能,使得在c语言的条件转移仿真时无法设定断点,因为,无论如何设置,程序都会按顺序走一遍语句。比如程序:<br />&nbsp;if(a&gt1)<br />{<br />&nbsp;&nbsp;&nbsp;b&nbsp;=&nbsp;2;<br />&nbsp;&nbsp;&nbsp;c&nbsp;=3;<br />&nbsp;&nbsp;&nbsp;d&nbsp;=&nbsp;b+c;<br />}<br />else<br />&nbsp;&nbsp;&nbsp;d&nbsp;=&nbsp;9;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;一般认为,如果a=1,不满足条件,程序不会进入括号内部执行。但由于arm的汇编语句带有条件执行功能,似乎是由于流水线的顺序执行提高了效率,但是问题也来了。可能是效率提高了,但是我们调试程序时,要考核程序在不同的条件下的行为,比如a&gt1,可是a&lt=1时,程序也会到括号内部执行一圈,虽然不会真正执行里边的程序。这就导致无法设置需要的断点,因此,也无法考核程序的行为。<br />&nbsp;&nbsp;&nbsp;&nbsp;不知各位过来人是如何解决此类问题的?请指教。
 楼主| zdl123 发表于 2007-10-12 18:00 | 显示全部楼层

自己顶一下

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

本版积分规则

1

主题

8

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部