0

有什么方法可以在 WindRiver Workbench 上
获得为 PPC 架构编译的 vxworks C 项目代码的最大“堆栈使用率”?ccppc

4

2 回答 2

2

由于各种明显的原因,没有实用的方法可以从静态分析中得到这一点——预测程序流程并非易事。也许对于一个简单的程序,但任何具有网络接口、配置文件等的有用系统几乎不可能建模。特别是递归会导致重大问题。

更多的用途是在运行系统中的实际堆栈使用,幸运的是有一个工具可以做到这一点 - checkStackshell 命令。

这依赖于使用已知模式(我认为是 0xEE)对堆栈进行初始化,然后 checkStack 查找使用的高水位标记 - 即第一个不包含该众所周知值的位置。

于 2016-09-26T16:17:09.813 回答
0

我不知道在不运行任何代码的情况下静态分析堆栈使用情况的方法。但是,我知道可能有两种方法可以提供很好的提示:

1)用一些已知的模式(例如)填充堆栈0xAA。在合理的时间内执行您的代码。然后再次分析堆栈以查看堆栈内容更改之前的最高点。这种方法已经有一个问题,“合理的时间”有多长?

2) 程序执行时对堆栈指针的值进行采样,然后对堆栈使用量进行统计猜测。

作为@Eugene Sh。指出在不运行任何代码的情况下可能无法实际获取堆栈使用情况。

于 2016-09-23T14:39:44.437 回答