keil mdk调试过程中查看局部变量的方法

      上次调试STM32做了一次总结,此次在调试nordic 51822时发现局部变量地址给不出任何信息,

导致无法查看局部变量值。通过和STM32的设置进行必较发现C/C++的编译器等级设置过高,而将

一些局部变量优化掉而没有分配内存地址。

      如下图所示,将optimzation优化等级从3等级降低到0等级后

      

后再查看局部变量p_addr,此值会自动出来。

       

等级0会为所有变量分配内存地址,这样便于程序开发调试。缺点是占用较大程序空间。

等级3会为优化掉局部变量,不会为其分配内存地址。这样不便于程序开发调试。好处是占用较小程序空间。


  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Keil μVision是常用的嵌入式开发工具之一,它支持多种微控制器平台,包括ARM等。在编程过程,了解如何查看和分析局部变量的信息对于调试非常重要。在Keil,你可以通过以下步骤来查看和分析程序局部变量: 1. **设置断点**:首先,在可能改变局部变量值的代码行设置断点。这将使程序暂停执行,允许你检查变量的状态。 2. **进入调试模式**:运行你的程序,当执行到断点处时,程序会自动暂停。此时可以切换到调试模式。 3. **查看变量窗口**:在μVision的调试界面(通常在底部),有一个名为"Watch"或"Variables"的窗口。在这里,你可以输入变量的名称来查找并查看它的当前值。 4. **查看堆栈**:如果局部变量是在函数调用过程创建的,你还可以检查堆栈视图,因为局部变量存储在函数调用的堆栈帧上。 5. **使用内联汇编或内存转储**:如果你需要更深入地分析内存布局,可以使用内联汇编或者在代码插入内存转储指令来查看变量的内存地址和实际值。 6. **使用变量查看器或内存分析工具**:Keil提供了内置的变量查看器,或者你可以利用第三方插件,如MemoryView等,来辅助查看和分析变量。 相关问题: 1. Keil的内联汇编如何帮助查看局部变量? 2. 在没有断点的情况下,如何直接查看某个时刻的局部变量值? 3. Keil是否存在内存转储命令可以直接获取变量的内存信息?
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值