【问题标题】:How can I "live watch" a variable in a union when debugging in IAR Workbench在 IAR Workbench 中调试时,如何“实时观察”联合中的变量
【发布时间】:2018-08-16 16:44:31
【问题描述】:

我是编程新手,但在 IAR 调试方面需要一些帮助。

我创建了一个带有浮点数的联合,一个包含 4 个 uint8 和 4 个 uint8 变量的数组,并且工作正常,我可以设置浮点数,并且在打印到 IO 终端时其他值是正确的。

我想在调试时监视实时监视窗口中的变量,但它说“错误,无法获取测试地址”(测试是联合的名称)。

除了查看内存位置之外,还有其他方法吗? 如果所有变量都是 32 位,它会起作用吗?我会在几个小时后到办公室时测试一下?

union Eeprom
{
struct
{
uint8_t Byte1;
uint8_t Byte2;
uint8_t Byte3;
uint8_t Byte4;
};
float floatvalue;
uint8_t Array[4];
};

int main(void)
{
  union Eeprom Test;

  Test.floatvalue = 23.1;

printf("floatvalue %3.2f \n Byte1 %x\n Byte2 %x\n Byte3 %x\n Byte4 %x\n 
   Array[0] %x\n Array[1] %x\n Array[2] %x\n Array[3] %x\n",      Test.floatvalue, 
   Test.Byte1, Test.Byte2, Test.Byte3, Test.Byte4, 
   Test.Array[0], Test.Array[1], Test.Array[2], Test.Array[3]);

实时观看窗口如下所示:

输出如下所示:

任何帮助将不胜感激

【问题讨论】:

    标签: debugging watch iar


    【解决方案1】:

    这是我的 IAR 手册所说的:

    实时观看窗口

    “实时观看”窗口(可从“查看”菜单中获得)重复采样和 在应用程序执行时显示表达式的值。 变量 表达式必须是静态定位的,例如全局变量。

    变量union Eeprom Test;main 函数中声明,因此它具有自动存储持续时间。这些被放置在堆栈上并且没有预定义的地址,这使得调试器更难保持。因此它们不能与 Live Watch 一起使用。

    Test 移出main,或使用static 声明。

    【讨论】:

    • 伟大的,愚蠢的错误,谢谢。我移动它并添加了 - union EEprom Test; - 在 main 之外声明它。
    【解决方案2】:

    所以,现在的代码是:

    union Eeprom
    {
    struct
    {
    uint8_t Byte1;
    uint8_t Byte2;
    uint8_t Byte3;
    uint8_t Byte4;
    };
    float floatvalue;
    uint8_t Array[4];
    };
    
    union Eeprom Test;
    
    int main(void)
    {
    
      Test.floatvalue = 23.1;
    
    printf("floatvalue %3.2f \n Byte1 %x\n Byte2 %x\n Byte3 %x\n Byte4 %x\n 
       Array[0] %x\n Array[1] %x\n Array[2] %x\n Array[3] %x\n",      Test.floatvalue, 
       Test.Byte1, Test.Byte2, Test.Byte3, Test.Byte4, 
       Test.Array[0], Test.Array[1], Test.Array[2], Test.Array[3]);
    

    实时观看窗口如下所示:

    【讨论】:

      猜你喜欢
      • 2011-12-16
      • 1970-01-01
      • 2010-10-09
      • 2011-11-07
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 2022-06-01
      • 1970-01-01
      相关资源
      最近更新 更多