作者 主題: 如何追蹤一個user space程式呼叫kernel的是那一支api  (閱讀 3561 次)

0 會員 與 1 訪客 正在閱讀本文。

kidmany2001

  • 懷疑的國中生
  • **
  • 文章數: 68
    • 檢視個人資料


要用什麼樣的方法可以知道某一支程式是用到那些底層kernel的呼叫

譬如date 我想知道他是叫用那些程式
一層一層往下追

還有gettimeofday這個function我也想知道是呼叫kernel那些API來完成

請問我該怎樣來追追追


謝謝 ;D

thyme

  • 老人組
  • 俺是博士!
  • *****
  • 文章數: 1281
    • 檢視個人資料


要用什麼樣的方法可以知道某一支程式是用到那些底層kernel的呼叫

譬如date 我想知道他是叫用那些程式
一層一層往下追

還有gettimeofday這個function我也想知道是呼叫kernel那些API來完成

請問我該怎樣來追追追


謝謝 ;D

當然是先找到應用程式的 source code,然後用它用什麼副程式,
通常是呼叫某程式庫,然後再去找該程式庫的原始碼,
會動到 kernel 的部份,通常是透過 dev 去溝通,
那麼可能就是 ioctl 了,這樣再到該 dev 的 kernel module 是哪一個。

還有一種情形是直接把 Kernle source 抓過來使用,這時你就要比對副程式的名稱了。

時間日期最終地方應該會在 arch 目錄下,這會跟 BIOS 或 硬體平台會有很大的關係。

jemic

  • 可愛的小學生
  • *
  • 文章數: 16
    • 檢視個人資料
strace

for example: strace -f -F -t ls