簡體   English   中英

如何識別共享庫,其功能當前正在由可執行文件執行

[英]How to identify the shared library, whose functions are currently being executed by an executable

可執行文件a.out加載共享庫1.so2.so3.so 這三個庫中的每一個都實現了一個函數func() 調用func() ,我想確定將執行哪個func()實現。

我在可執行文件的PID上嘗試了ltrace 它僅列出func()調用,而不列出共享庫。

有什么建議么?

使用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性能:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM