函数调用最大路径以及堆栈使用

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
tali_4848921
Level 1
Level 1
5 sign-ins First reply posted First question asked

在程序运行时,函数的调用以及执行会使用堆栈,为了防止堆栈溢出,想要计算各个函数之间调用的最大路径以及使用的最大堆栈。

使用PSoC Creator有什么办法能计算出来吗?

注:不是单个函数使用的堆栈大小,是包含了调用关系的堆栈大小,也就是想知道程序运行时各种情况下能使用的最大堆栈量。

0 点赞
1 解答
Roy_Liu
Moderator
Moderator
Moderator
5 comments on KBA First comment on KBA 10 questions asked

一个类似的老帖参考一下Solved: how can i detect stack overflow? - Cypress Developer Community

另外 也可以在在网上搜一搜堆栈溢出检测方法,网上挺多相关介绍的。

Roy Liu

在原帖中查看解决方案

0 点赞
3 回复数
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

PSoC Creator 的工程编译之后,会生成一个output,你可以看到你工程分配的堆栈空间。

pastedImage_0.png

你可以在工程中设置这个值:

pastedImage_1.png

你可以看一下这个链接文档: PSoC® Arm® Cortex® Code Optimization (cypress.com)

0 点赞

感谢你的回答,但是很抱歉你的回答并不是我要问的,我知道如何在工程中设置堆栈的大小。我想问的问题是:在程序运行时,函数执行时会占用堆栈的空间,我想计算出包括各种情况的函数调用使用的最大的堆栈空间是多少?因为我并不知道我设置的堆栈大小是否合适,所以想根据程序运行时使用的堆栈大小来设置。

0 点赞
Roy_Liu
Moderator
Moderator
Moderator
5 comments on KBA First comment on KBA 10 questions asked

一个类似的老帖参考一下Solved: how can i detect stack overflow? - Cypress Developer Community

另外 也可以在在网上搜一搜堆栈溢出检测方法,网上挺多相关介绍的。

Roy Liu
0 点赞