本文作者:qiaoqingyi

keil查看局部变量(keil调试查看变量的值)

qiaoqingyi 2023-08-23 140

在Keil中要看个别变量的值方法如下1寄存器的值,可以在Register串口中查看 2定时器IO口串口状态可以在”Peripherals“中点击相应的选项查看 3普通变量的值,可以直接将鼠标移动到变量名上方,会自动显示当前执行中;keil无法观察局部变量keil观察局部变量的时候,发现总是显示not in scope,是优化级别过高,降低优化级别即可;简单来说可以 Add to Watch 添加到Watch窗口不过你需要明确这个变量的作用域和生命期对于很多临时变量,如果你断点过早或者过晚的话是无法观察到其数值的Watch窗口可以查看某个符号不仅限于变量的内容和类型;当进入程序状态时,观察窗口默认的页面是“localsquot,这个窗口页面会动态显示当前模块变量即局部变量和全局变量,一旦模块变了即 域 变了,属于这个模块域的局部变量就不会在在这窗口页面出现的所以说这个窗口;在keil中,编写C语言程序,当我在一个函数中使用了一个变量局部变量,那么在这个函数结束退出的时候,这个变量对应的内存应该会被释放掉,以方便后面的程序使用吧可是我在编程的时候发现,好像并不是这样啊我在局部。

keil查看局部变量(keil调试查看变量的值)

不必要呀,写一段再定义出可以,但是这时定义的变量只能下面的语句中使用;你把int x,yx,y定义为局部变量 这个语句放到程序开始,就是 void main 后面 不是每个编译器都是必须在程序开始定义变量的,很多编译允许在使用的时候才定义变量但keil就是一个要在程序开始定义变量的编译器;unsigned int i,j是可以放在main函数的,前提是这个变量不需要定义为全局变量,而是main函数的局部变量sbit led1=P1^0应该是不可以放在main函数里面,这个东西映射端口寄存器的地址。

在small_rtos中,变量在对用的任务中定义,以任务为单位进行调用,存储方式你可以分析small_rtos中数据结构定义~~~os_cfgh中定义的常量有如下信息define OS_Q_MEM_SEL xdata * 消息队列存储空间选择,keil c51有;就算默认是0也别这样,bug就是这样产生的,不过除了部分寄存器,大部分上电都为0;很简单啊被优化掉了全在寄存器里,没有在栈里面所以调试信息无法描述了自然调试器也无法watch想看就关掉优化em18。

如果变量在函数外部 或者函数内部用static修饰,那变量属于静态存储,编译的时候就已经分配好空间了,有初始值,类似于静态变量;其他环境我不清楚,反正在C51里,变量定义之前,不允许有执行语句的存在我的C语言是在VC++ 的控制台下学习的,刚转到51时,也曾经犯过你这种错误,当时找了很久才发现C51,包括 Keil在内的其他单片机的C语言,都不允许;1简单的办法是将鼠标放置变量上就可以看见了2选择变量名,右键添加在watch窗口3局部变量在locals窗口中可以看到。

8汇编窗口查看汇编代码9堆栈局部变量显示当前函数局部变量及其值,方便查看10观察窗口MDK5提供了2个观察窗口,按下按钮会弹出一个显示变量的窗口,输入你所想要观察的变量表达式,即可查看其值11内存查看窗口MDK。

阅读
分享