如何分析我的动态内存分配器?

问题描述 投票:0回答:1

我正在开发自己的分配器,并使用

LD_PRELOAD
环境变量来插入
libc
的 malloc 函数。

我想在运行某些应用程序时分析我的代码,例如测量每个函数相对于总执行时间所花费的时间。

如何准确测量应用程序运行时代码中每个函数所花费的时间?

我知道我可以使用

gettimeofday()
h 中的
sys/time.
来测量时间,但它会带来自己的开销。

我考虑过使用

perf
gprof
等工具,但我不确定如何在需要使用
LD_PRELOAD
进行干预的环境中使用它们。

profiling perf gprof ld-preload library-interposition
1个回答
0
投票

我不确定如何在需要使用

LD_PRELOAD

进行干预的环境中使用它们

使用

perf
应该就可以了™:

perf record env LD_PRELOAD=./mymalloc.so /path/to/program

使用

gprof
无法开箱即用,因为没有任何东西可以调用“保存覆盖范围”钩子 (
_mcleanup
),除非您 使用
-pg
构建主程序。

如果您使用

a.out
构建主
malloc
-pg
中介层,则
gprof
也应该可以工作™。

© www.soinside.com 2019 - 2024. All rights reserved.