2015-06-03 58 views
1

我有一個沒有源代碼的程序。strace'open'調用可執行文件庫

當我運行它時,日誌中出現「Can not open file ...」錯誤。

我叫strace的跟蹤在內核開放通話,以這種方式:

strace -e trace=open,close,read,write,connect,accept your-command-here 

不過,似乎有沒有開放電話我期待的(即應發生之前,日誌中顯示「無法打開文件...」)

可執行文件的確授權打開調用到一個tierce庫。 看起來strace只跟蹤內核上可執行文件的調用,而不是那些庫依賴關係的調用。

我試圖用ltrace跟蹤在隨後的圖書館發生了什麼,但它不爲strace的,只有函數調用(這是不是人類可讀)顯示相同的信息。

有沒有辦法在可執行文件和庫中同時運行strace

回答

2

strace應該顯示所有的open調用。但是:

  • 也許你的應用程序調用一個子進程來完成工作。對於這種情況,您可以添加-f選項。
  • 另一方面,它可能通過打開與另一個進程的套接字(或類似的)連接來完成工作。在這種情況下,你將看不到任何痕跡。同樣,如果您正在使用syslog接口,那麼實際工作可能會在您的進程外完成,有可能在您無法使用此工具跟蹤的內核中完成。
+0

'-f'選項完美無缺! 謝謝托馬斯的幫助 – matt

相關問題