map文件里显示栈占用不大,运行时却出现栈空间不足,这两个结果为什么对不上?先要分清看到的是什么:链接器计算的是调用链的静态栈需求,调试器显示的栈水位则来自本次运行留下的内存痕迹。它们各有用途,也各有盲区。下面以使用ILINK和C-SPY的IAR Embedded Workbench for Arm为例,说明报告生成及差异核查方法。
改了一个源文件,按下编译,窗口却只提示工程已是最新;换个时候,构建中途停了,翻来翻去又找不到具体错误。这种情况容易让人以为IAR漏了消息。其实构建窗口显示的是这一次构建产生的内容:如果文件没有参与编译,或窗口内容被清空,之前的错误不会留在那里。下面以IAR Embedded Workbench for Arm为例,从打开窗口开始检查。