0

可执行文件加载a.out共享库1.so和. 这三个库中的每一个都实现了一个函数。当被调用时,我想确定执行的是哪个实现。2.so3.sofunc()func()func()

我尝试ltrace了可执行文件的PID。它只列出func()调用,但不列出共享库。

有什么建议么?

4

1 回答 1

0

使用系统点击:

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
于 2017-01-25T08:29:38.330 回答