关于使用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时,程序也会到括号内部执行一圈,虽然不会真正执行里边的程序。这就导致无法设置需要的断点,因此,也无法考核程序的行为。 不知各位过来人是如何解决此类问题的?请指教。 |