Re: [問題] debug + trace code
※ 引述《yshihyu (yshihyu)》之銘言:
: 目前工作是做android 手機 , 在實體手機開發,編譯後image燒到手機裡面
: 我是弄 kernel & driver 部分, 我目前都用 kernel log 訊息在trace code & debug
: 但是有點麻煩是常常需要編譯好在燒到手機,之後再操作產生log 訊息
: 在分析log ... 每一次都花費15~20分鐘 非常耗費時間
: 不知道大家都是怎麼做的?
: 像我這種情況可以用gdb 除錯嗎?
: 實體手機(target) ~ 電腦(host) 之間有辦法使用gdb嗎?
: 謝謝
我目前工作中有一部份內容跟你差不多,
也一直很想知道 gdb 是否能用在 Android Kernel 上,
不過一直沒有成功。
講一下我目前的狀況:
1. 使用 module
我比較需要關注的 driver 等,我會修改自己 local 端的 code,使其成為 module,
需要 debug 時就可以修改後只編譯該 module。
2. Kprobe
有點像是 hook 的感覺,寫一個 module 並註明自己關注的 function,
載入後每次執行該 function 之前就會先執行 module 中的 pre_handler,
另外也可取得參數等資料。
3. FTrace
取得指定 function 的 call graph 等資訊。
不過我個人使用時經常發生當機狀況,不確定是否是我這邊機子的問題。
猜測使用 uart 時會好一點。
4. kgdb, kgtp 等
這邊是我一直沒頭緒的部份。
不過由於我只能從 usb 透過 adb 進行操作,
我猜測這種情況下需要解決的問題可能會更多,
也許使用 uart 比較有機會。
5. debugfs, kernel module parameters
如果要追的不是自己人寫的 code (?),
其實系統中很多地方都有埋下方便 debug 的設計,
有時候只要開啟對應的 kernel config,
就會多印出很多訊息或長出 debugfs,
我從以前就一直對 kernel 很不熟,
如果有說錯的地方還請不吝指正。
如果還有其他好用工具也希望能順便指點一下 :p
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.78.231