咨询电话 0514-86166160

新闻中心

嵌入式设备中使用Malloc Hook的试验

发布时间:2024-08-02 13:32:41 浏览人数: 作者: 新闻中心

  在嵌入式设备中,计划使用malloc hook来进行内存跟踪,以便测试程序的内存使用。

  在程序开始,增加了mtrace函数,定义环境变量MALLOC_TRACE。

  发现了两个问题:1、程序运行很慢2、日志文件大小上升的很快,在嵌入式设备中,这样基本不可用。

  考虑变通方法,能否将mtrace的环境变量MALLOC_TRACE定义为stdout,这样既不用写内存,又不会占用磁盘空间,输出可以通过telnet客户端来进行记录。

  问题还是速度慢,看来速度的瓶颈不在于写磁盘。通过查看glibc的源代码,速度的瓶颈,主要在于

  那么我们可以考虑,在程序运行的时候,不去做相应的解析,只是记录下当时的指针,事后再通过其他软件对数据解析。

  其实在日志中,如果分配和释放指针能够对应上,那么我们就没有必要关心对应的代码,剩余少量的对应不上的内存操作,我们才需要。因此通过指针找到对应代码的运算量应该不大。

  根据内存分配的日志,我们可以看到有哪些内存泄漏,可以看到最后堆的地址,从而判断堆所占用的物理内存空间。