打印
[开发工具]

IAR如何查看程序所需最大的堆栈空间

[复制链接]
8892|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
墨羽谨年|  楼主 | 2014-9-12 16:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用stm32在做一个产品,现在遇到的问题是程序总是莫名的跑飞以及全局变量被无故篡改,程序在逻辑上多次检查,暂未发现问题,疑似栈溢出,但是我现在分配的堆栈各24K应该足够了(不确定),用的是IAR for arm6.60,想请问下一些问题:
1.怎么查看程序运行所需要的最大的堆栈空间呢?
2.因为程序中函数的嵌套比较多,所以想知道函数的嵌套对程序的影响?

谢谢了。
沙发
airwill| | 2014-9-12 21:11 | 只看该作者
查看程序运行所需要的最大的堆栈空间呢?
有个办法, 运行一段时间厚, 直接查堆栈, 搜索哪里开始是未修改过的初始值, 就可以确定堆栈用了多少.

不过堆栈使用有偶然性, 最大堆栈需求量不一定能捕捉到. 一定要安排余量哦

使用特权

评论回复
板凳
zh113214| | 2014-9-13 21:16 | 只看该作者
运行一段时间看看,是否存在偶然性!!

使用特权

评论回复
地板
it_yrj| | 2014-9-14 10:17 | 只看该作者
都6.6了啊,俺还6.3呢

使用特权

评论回复
5
bear1| | 2014-9-15 14:17 | 只看该作者
6.3好

使用特权

评论回复
6
prayerwind| | 2014-9-15 17:50 | 只看该作者
你需要理解C语言是如何堆栈的,调用一个函数,会将形参,函数指针(Saved PC),程序局部变量进行堆栈。函数返回后,栈指针减去所上述的内容。

嵌套调用当然会耗费更大的栈区,当栈满时,很可能无**常保存 Saved PC。

使用特权

评论回复
7
小浣熊| | 2014-9-17 23:26 | 只看该作者
肯定是哪里出现bug了吧

使用特权

评论回复
8
墨羽谨年|  楼主 | 2014-9-22 17:13 | 只看该作者
prayerwind 发表于 2014-9-15 17:50
你需要理解C语言是如何堆栈的,调用一个函数,会将形参,函数指针(Saved PC),程序局部变量进行堆栈。函 ...

怎么想怎么不科学,我都分配了24KB的空间给栈了,不至于还溢出啊

使用特权

评论回复
9
墨羽谨年|  楼主 | 2014-9-22 17:14 | 只看该作者
小浣熊 发表于 2014-9-17 23:26
肯定是哪里出现bug了吧

是出现BUG了,现在苦于找不到问题到底出在哪里。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

110

帖子

2

粉丝