我有一个继承的大型C/C++项目。有没有好的工具或技术来生成关于所有数据类型的"sizeof“的报告,以及这样一个项目中每个函数的堆栈占用空间的分解。
发布于 2008-09-30 18:05:28
我很想知道你为什么要这么做,但那只是好奇而已。
确定使用的每个类的大小应该很简单,除非它们已经模板化,在这种情况下,您还必须检查每个实例化。
同样,确定函数的每次调用的大小也很简单:它是每个传递的参数的大小加上一些函数开销。
要确定整个程序的全部内存使用情况,如果不是完全静态定义的,没有运行时分析器是无法完成的。
编写一个将所有类名收集到一个文件中的shell脚本将非常简单。该文件可以被构造为一个.cpp文件,该文件是对每个类的sizeof的一系列调用。如果该文件还包含每个头文件,则可以编译并运行该文件,以获得仅类的内存占用输出。
同样,剔除所有函数定义以查看它们何时没有使用引用或指针参数(例如,将整个类实例复制到堆栈上)应该是非常简单的。
所有这些都表明,我不知道现有的工具,但编写一个应该不难。
发布于 2008-09-18 13:01:58
我不知道有什么工具,但是如果你在MSVC下工作,你可以使用DIA SDK从.PDB文件中提取大小信息。遗憾的是,这不适用于堆栈足迹IIRC。
发布于 2008-09-18 14:28:47
我不确定堆栈足迹的概念是否真的存在于现代编译器中。也就是说,我认为确定使用的堆栈空间量取决于所采用的分支,而分支又取决于输入参数,并且通常需要解决暂停问题。
https://stackoverflow.com/questions/91849
复制相似问题