Kprobe Userspace Tool 使用筆記
kprobe 是一個輕量的 linux kernel 的除錯工具,他可以在不重新編譯核心的情況下追蹤一個函式的呼叫以及回傳,相當方便。kernel 內目前提供了三種類型的 probe,分別是 kprobe、kretprobe 以及 jprobe,三者都是基於類似的原理所實現的。
詳細的技術原理 … 我也沒弄得那麼清楚 😜,有興趣的可以去看核心的技術說明手冊,會比我介紹清楚得多,這邊只簡單介紹好用工具。
kprobe 是一個輕量的 linux kernel 的除錯工具,他可以在不重新編譯核心的情況下追蹤一個函式的呼叫以及回傳,相當方便。kernel 內目前提供了三種類型的 probe,分別是 kprobe、kretprobe 以及 jprobe,三者都是基於類似的原理所實現的。
詳細的技術原理 … 我也沒弄得那麼清楚 😜,有興趣的可以去看核心的技術說明手冊,會比我介紹清楚得多,這邊只簡單介紹好用工具。
前一陣子有追蹤一個 ARM 平台發生 Kernel BUG_ON 的問題,在同事的協助下花了一點時間終於追出可能的原因。在我剛開始接觸 Linux Kernel 時,遇到這類 log 都很不知道該如何下手,累積了一些經驗以後才慢慢知道該如何切入、分析及找出原因。
這篇會分享實際分析 Kernel Oops log 的過程,以及相關工具的使用方式做為案例分析給各位參考。
這篇延續 Linux 系統程式設計 - fd 及 open()、close() 系統呼叫,筆記 read()、write() 系統呼叫及 page cache 相關的部分。內容主要參考 Robert Love 的 Linux System Programming 一書。
開始接觸 Linux Kernel 也有差不多一年的時間,最近開始有明顯地感覺到有某種瓶頸存在,仔細思考了一下覺得是底子不夠,所以決定從基礎來好好學習一下,再搭配核心程式碼來確認是否是看到的那樣。這篇主要筆記 file descriptor、open() 及 close() 系統呼叫相關的部分,主要參考 Robert Love 的 Linux System Programming。
Linux Kernel 是一個偉大的開源專案,同時也是相當龐大的專案,要 Trace 這麼大的專案總是要準備一點輔助工具才會有效率。這篇主要介紹使用 VS Code 編輯器,加上我改的 C/C++ GNU Global 套件來 Trace Linux Kernel,對一些大型的 C/C++ 專案也適用。
最近在看 Linux NFS 相關的程式碼,趁還有點記憶的時候來筆記一下,這篇主要筆記 NFS filehandle 的運作機制。