[英]How to identify the shared library, whose functions are currently being executed by an executable
可執行文件a.out
加載共享庫1.so
, 2.so
和3.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.