可执行文件加载a.out
共享库1.so
和. 这三个库中的每一个都实现了一个函数。当被调用时,我想确定执行的是哪个实现。2.so
3.so
func()
func()
func()
我尝试ltrace
了可执行文件的PID。它只列出func()
调用,但不列出共享库。
有什么建议么?
使用系统点击:
probe process("/path/to/1.so").function("func")
{
printf("%d: 1.so\n", pid());
}
probe process("/path/to/2.so").function("func")
{
printf("%d: 2.so\n", pid());
}
probe process("/path/to/3.so").function("func")
{
printf("%d: 3.so\n", pid());
}
使用它:
sudo -E stap ./func.stap
使用 linux 性能:
sudo perf probe -x /path/to/1.so func
sudo perf probe -x /path/to/2.so func
sudo perf probe -x /path/to/3.so func
sudo perf top -e probe_1:func,probe_2:func,probe3:func