簡體   English   中英

ltrace(庫跟蹤工具)如何工作?

[英]How does ltrace (library tracing tool) work?

ltrace如何工作?

如何找到該程序的調用庫函數?

所有對庫函數的調用都具有通用的代碼路徑嗎? 也許ltrace在此通用代碼路徑中設置了斷點?

謝謝!

動態可執行文件具有一個符號表,供鏈接器在解析需要連接到庫函數的引用時使用。 (您可以通過運行objdump -T /path/to/binary自己查看)。

該符號表也可以通過其他工具訪問,例如ltrace ,因此確定要鈎住哪些函數並單獨遍歷該列表很簡單。

請參閱Ottowa Linux Symposium 上有關ltrace內部結構的演講,其中提供了詳細的按功能分類的詳細信息。 要繼續閱讀源代碼,請參閱官方存儲庫第三方github鏡像

一些較新的版本(比該討論要新的版本)還掛接了dlopen()調用,以能夠跟蹤動態加載的庫的調用。 考慮一下,該機制應該相當明顯-如果可以用填充程序替換dlopen() (當dlopen()本身如上所述進行動態鏈接時),則可以在它返回的任何函數指針上設置一個斷點。

暫無
暫無

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

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