Q: 用IAR开发stm32f103,发现单步调试的快慢和设定的栈大小有关系,当栈设定较小时单步调试就很快,当栈设定的很大的时候,单步调试就特别特别慢,当栈设定到 100K 的时候几乎就卡死了(实际上没有)。这是为什么啊???
请大侠指点迷津。
A: 因为单步的时候,IAR会更新你的变量区.
也就是每单步一次,IAR就读一次ARM的RAM区,把需要的数据读到界面上显示给你.所以,如果你要观察一个大的数组,或者许多变量的时候,单步时间就感觉到很长,而且变量越多越慢,甚至有死机的感觉.
关键还是PC与ARM交互的数据太多,而JTAG速度还是不够快.
A: 楼上说的对,把所有的观察窗口都关了,单步就快了。
A:变量越多,更新需要时间,时间相应的就越长了
A:还有去掉DEBUGGER菜单里的一些插件如堆载检查。
A:观察的变量太多,适当减少.