可执行文件a.out
加载共享库1.so
,2.so
和3.so
。在三个库中的每一个中都实现了一个函数func()
。调用func()
时,我想确定执行func()
的哪个实现。
我在可执行文件的PID上尝试了ltrace
。它仅列出func()
调用,但不列出共享库。
有什么建议吗?
答案 0 :(得分:0)
使用systemtap:
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 perf:
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