请教:为什么keil c51 中不能设断点
keil优化的问题,设置断点的程序段被keil优化掉了,详见keil优化级别说明
级别
说明
常数合并:编译器预先计算结果,尽可能用常数代替表达式。包括运行地址计算。
优化简单访问:编译器优化访问8051系统的内部数据和位地址。
跳转优化:编译器总是扩展跳转到最终目标,多级跳转指令被删除。
1
死代码删除:没用的代码段被删除。
拒绝跳转:严密的检查条件跳转,以确定是否可以倒置测试逻辑来改进或删除。
2
数据覆盖:适合静态覆盖的数据和位段被确定,并内部标识。bl51连接/定位器可以通
过全局数据流分
,选择可被覆盖的段。
3
窥孔优化:清除多余的mov指令。这包括不必要的从存储区加载和常数加载操作。当存
储空间或执行时间可节省时,用简单操作代替复杂操作。
4
寄存器变量:如有可能,自动变量和函数参数分配到寄存器上。为这些变量保留的存
储区就省略了。
优化扩展访问:idata、xdata、pdata和code的变量直接包含在操作中。在多数时间没
必要使用中间寄存器。
局部公共子表达式删除:如果用一个表达式重复进行相同的计算,则保存第一次计算
结果,后面有可能就用这结果。多余的计算就被删除。
case/switch优化:包含switch和case的代码优化为跳转表或跳转队列。
5
全局公共子表达式删除:一个函数内相同的子表达式有可能就只计算一次。中间结果
保存在寄存器中,在一个新的计算中使用。
简单循环优化:用一个常数填充存储区的循环程序被修改和优化。
6
循环优化:如果结果程序代码更快和有效则程序对循环进行优化。
7
扩展索引访问优化:适当时对寄存器变量用dptr。对指针和数组访问进行执行速度和
代码大小优化。
8
公共尾部合并:当一个函数有多个调用,一些设置代码可以复用,因此减少程序大小
。
9
公共块子程序:检测循环指令序列,并转换成子程序。cx51甚至重排代码以得到更大的循环序列。
keil4 程序的某行断点怎么设置 双击程序所在行没反应啊
在Keil5的魔法棒里的output里,把Debug的相关设置勾选,即可在调试状态下
双击程序设置断点。
keil c 的断点设置问题。
这句的意思是:
地址断点已经设置,重新设置断点吗?
你在已经设置过断点的地方由设置了一次,就会出现这个。
设置断点的时候,在语句的最左边显示灰色的那一列上单击就行。设置的断点当你打开debug菜单的breakpoints选项后会在对话框里显示。
如果你并没有设置断点或已经清除了断点,结果还是出现这个,只好清除所有断点,重新编译程序,再重新设置了。
如何设置keil uvison4中如何设置断点
keil uvison4中,设置断点具体方法如下:
方法1:用鼠标双击。在需要设置的行的最前面,双击鼠标左键,即可设置或清除断点。
方法2:用命令或命令按钮。先将光标移到需要设置的行,然后点击Debug菜单下的Insert/Remove Breakpoint命令或工具栏中的相应按钮,即可设置或清除断点。
keil中设置断点的作用是什么?
断点的作用是可以让程序运行到设置的断点处,然后查看各种变量和寄存器中的数值。
设置断点其实是省时的调试方法,但是千万要注意,如果断点前涉及到了一些CPU读取外部数据的话,有可能会让你的程序永远运行不到断点处,因为仅用keil“软”调试的话,读取的外部硬件的数据都是“1”。
所以断点使用时要注意这点就行了。