2011-04-29 91 views
2

程序安裝在2臺計算機上。某個圖書館在一臺計算機上正常工作,但在另一臺計算機上完全不工作。我想知道一個圖書館是否失蹤。跟蹤程序中的所有調用?

我使用strace,所以我可以看到程序在運行時正在調用哪些庫。 strace提到的所有庫都是正確的,但strace還能檢測到一個庫是否調用另一個庫或文件?任何方式來檢測這種情況?

回答

5

是strace會檢測來自加載的庫的調用。

如果你想跟蹤庫調用(非系統的),使用ltrace

0

要檢查是否缺少庫,運行ldd /full/path/to/program

2

這聽起來像你想查看您的應用程序的函數調用圖,即哪些功能互相呼叫,他們住哪個圖書館等等。如果是這樣,你可能想看看callgrind tool(這是valgrind的一部分)。

以下是使用callgrind to profile some code的示例。

使用callgrind爲您的應用程序生成配置文件數據後,將其加載到Kcachegrind中以將其可視化。這是簡單的點擊:突出顯示功能,查看呼叫者/被呼叫者,查看呼叫圖等等。我發現它在類似情況下非常有用。

+0

鏈接到斯坦福是密碼保護:(。 – JohnX 2013-03-27 16:26:46