簡體   English   中英

他們如何調試Linux Kernel Core

[英]How they do debugging Linux Kernel Core

如今,調試變得如此先進,甚至可以使用虛擬環境來調試“核心內核源代碼”。

但是,在閱讀了幾篇與內核核心開發相關的博客之后,不清楚他們是否正在使用虛擬環境進行調試。

他們提到他們依賴“打印消息”,而不是使用調試工具,而對於核心組件至少是這樣。

因此,我向“ Linux內核專家”提出要求,讓我知道調試內核時遵循的良好做法是什么?

在嘗試調試內核時,我嘗試了多種方法。

  1. 有時,最簡單的方法是根據我自己的條件值添加一些printk語句,監視串行日志並查看發生了什么。 當經常調用所討論的函數但您僅對其中一部分感興趣時,它特別有用。
  2. QEMU GDB調試。 我有一個buildroot文件系統設置。 這意味着內核是精益的,並且可以快速啟動。 我使用-s -S標志啟動qemu,並將gdb附加為target remote :1234 此外,此設置中沒有太多的用戶空間進程,因此更容易調試內核。
  3. VMWare存根。 假設您正在運行Ubuntu VM,則可以將gdb附加到VMware存根並調試內核。 就我個人而言,我從來不必走這條路,但我希望有一天能嘗試一下。
  4. 如果您的設備內核卡在引導循環中,並且沒有將任何調試信息打印輸出到串行中,那么嘗試使用QEMU引導它仍然可能會有所幫助。 當然,當內核嘗試加載驅動程序時,啟動可能會失敗,但是您應該能夠附加gdb,獲取堆棧跟蹤並查看根本原因(也許是遞歸調用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM