有没有什么办法可以在WindRiver Workbench上使用ccppc
为PPC架构编译的vxworks C项目代码
最大的“堆栈使用率”?elf文件的最大堆栈使用
0
A
回答
0
我不知道一种静态分析堆栈使用情况而不运行任何代码的方法。然而,我可能有两种方法可以给出一个很好的提示:
1)用一些已知的模式填充堆栈(例如0xAA
)。执行您的代码一段合理的时间。然后再次分析堆栈以查看堆栈内容被更改的最高点。这种方法已经存在问题,“合理的时间”有多长?
2)在程序执行时取样堆栈指针的值,然后统计堆栈使用量。
As @Eugene Sh。指出可能没有办法在没有运行任何代码的情况下实际获取堆栈使用情况。
1
由于各种显而易见的原因,没有实际的方法可以从静态分析中获得这一点 - 预测程序流程并非无足轻重。对于一个简单的程序来说,但是任何有用的网络接口,配置文件等等系统几乎都不可能建模。递归尤其会导致重大问题。
更多的用途将是运行系统中实际的堆栈使用情况,幸运的是有一个工具可以做到这一点 - checkStack
shell命令。
这依赖于使用已知模式初始化的堆栈(我认为是0xEE),然后checkStack查找使用的高位标记 - 即第一个不包含该已知值的位置。
相关问题
- 1. 达到的最大堆栈大小
- 2. 堆栈,帧,全局指针和ELF文件
- 3. 递归 - 调用堆栈失败测试的最大堆栈大小
- 4. 堆栈大小的最大使用限制是否有限制?
- 5. 堆栈函数仅堆栈最后一个光栅文件
- 6. 程序最大调用堆栈超过
- 7. 最大调用堆栈超过
- 8. Node.js最大调用堆栈超出
- 9. 使用Angular CLI构建超出最大调用堆栈大小
- 10. Babel,使用path.replace时超出最大调用堆栈大小
- 11. 最大线程堆栈大小.NET?
- 12. 如何找到最大堆栈大小?
- 13. 使用ELF文件
- 14. 堆栈= java.lang.StackOverflowError的:堆栈大小8MB
- 15. 使JS远程扔最大调用堆栈大小超过
- 16. 使用$ cookies和$ stateChangeStart检查sessionID的最大调用堆栈
- 17. 从堆栈转储和.elf文件中提取FreeRTOS/ARM/C++堆栈跟踪的工具?
- 18. 堆栈应该如何使用大对象堆栈?
- 19. Node.js - 超过一个用户的最大调用堆栈大小
- 20. 使用堆栈编辑“.ghci”文件
- 21. 的jQuery()方法调用的最大堆栈大小超过
- 22. 回文使用堆栈
- 23. 洞察V8最大堆栈帧/尺寸
- 24. 堆栈最大尺寸覆盖C++
- 25. sails.sockets.broadcast的RangeError:最大调用堆栈大小超出
- 26. 的RangeError:最大调用堆栈大小angular2
- 27. 的RangeError:超过(巴贝尔Ramda)最大调用堆栈大小
- 28. 未捕获的RangeError:超出最大调用堆栈大小 - socket.io
- 29. 未捕获的RangeError:最大调用堆栈大小超出
- 30. 未捕获的RangeError:超出最大调用堆栈大小chrome
堆栈使用情况可能因运行而异(考虑具有可变深度的递归)。所以不,没有办法。你可以得到一个特定的运行。 –
@EugeneSh。诸如https://www.absint.com/stackanalyzer/index.htm之类的工具会给你带来最坏的情况,并且它会告诉你是否有某个特定的原因无法确定它(例如,你使用非递归递归呼叫次数)。 – nos