如何将 perf 与 ld_preload 一起使用?

Ste*_*ven 6 environment-variables ld-preload perf

我尝试使用perf statwithLD_PRELOAD作为可执行文件的前缀,例如:

perf stat LD_PRELOAD=$PWD/../user/preload.so ./write 1
Run Code Online (Sandbox Code Playgroud)

似乎对 perf 不起作用,有什么办法可以实现吗?

Pet*_*des 8

perf stat env LD_PRELOAD=....  ./write 1
Run Code Online (Sandbox Code Playgroud)

这应该可行,尽管这意味着/usr/bin/env正在分析进程,因此您也会获得其开销。至少它比像这样的命令便宜sh -c 'LD_PRELOAD=... exec ./write 1'

如果启动开销成为问题,您可以自行writefork/exec perf stat -p <PID>部分程序的性能统计