Memory 如何在嵌入式系统中对堆分配的对象进行内存分析?

Memory 如何在嵌入式系统中对堆分配的对象进行内存分析?,memory,embedded,heap,Memory,Embedded,Heap,我试图分析我们系统的内存使用情况。我们在启动时在堆上分配了一些单例对象。我想知道这些物体的大小。信息必须在那里,因为调试器知道它们有多大。如何从调试信息中转储该信息?我们的编译器是WindRiver(Diab)。我可能会添加一些调试代码,将sizeof操作的结果输出到控制台或日志文件中。我不知道是否已经有一个实用程序可以满足你的需要;可能有,但我不知道(可能有人会在这里插话)。我可能会添加一些调试代码,将sizeof操作的结果显示到控制台或日志文件中。我不知道是否已经有一个实用程序可以满足你的需

我试图分析我们系统的内存使用情况。我们在启动时在堆上分配了一些单例对象。我想知道这些物体的大小。信息必须在那里,因为调试器知道它们有多大。如何从调试信息中转储该信息?我们的编译器是WindRiver(Diab)。

我可能会添加一些调试代码,将
sizeof
操作的结果输出到控制台或日志文件中。我不知道是否已经有一个实用程序可以满足你的需要;可能有,但我不知道(可能有人会在这里插话)。

我可能会添加一些调试代码,将
sizeof
操作的结果显示到控制台或日志文件中。我不知道是否已经有一个实用程序可以满足你的需要;可能有,但我不知道(可能有人会在这里插话)。

对象的大小是一个编译时常量。这就是sizeof()运算符返回的内容以及调试器知道的方式,但它不包括由该对象动态分配的内存

VxWorks有一个showMem()函数用于监视堆的使用情况。我过去曾使用它来测量对象足迹,方法是编写测试代码,用showMem调用前后对其进行实例化。我还使用它来测试调用析构函数时是否返回了所有内存


要进行更复杂的内存分析,请将代码移植到Linux并使用Valgrind等工具。

对象的大小是编译时常量。这就是sizeof()运算符返回的内容以及调试器知道的方式,但它不包括由该对象动态分配的内存

VxWorks有一个showMem()函数用于监视堆的使用情况。我过去曾使用它来测量对象足迹,方法是编写测试代码,用showMem调用前后对其进行实例化。我还使用它来测试调用析构函数时是否返回了所有内存


要进行更复杂的内存分析,请将代码移植到Linux并使用Valgrind之类的工具。

GNU objdump似乎可以做到这一点,objdump-W myfile.elf以文本格式转储调试信息,可以通过搜索找到信息。

GNU objdump似乎可以做到这一点,objdump-W myfile.elf以文本格式转储调试信息,可以通过搜索来查找信息。

我需要脱机使用脚本,而不是运行代码。明白-很高兴你找到了解决方案(我很惊讶没有人提到它)。我需要脱机使用脚本,而不是运行代码。明白-很高兴你找到了解决方案(我很惊讶没有人提到它)。