我使用 CooCox 调试 STM32F4,遇到一个调试器异常问题:
static STEP_MODE val_step_mode = FALSE;
1 if ((Get_Core_Current_Track()->step_mode) != val_step_mode)
2 {
3 val_step_mode = Get_Core_Current_Track()->step_mode;
4 return BS_SUB_MODE;
5 }
第 1 行用来对比程序运行时的实时状态与静态变量val_step_mode;两者不一致就进入 if 分支,把实时状态赋值给静态变量,等待下一轮判断。
按下开发板按键后,条件成立,程序进入 if 块,说明此时两个变量值必然不相等。
但调试器表达式窗口显示val_step_mode为 0;单步执行第 3 行赋值语句后,调试器里val_step_mode依旧显示 0,逻辑上完全说不通。
奇怪的是程序实际运行逻辑完全正常,其他函数能读到正确的变量值、执行行为无误。
代码里多处静态 / 全局变量都出现同类问题:调试窗口显示的值错误,但程序真实运算不受影响
|
|