第十八章讀書筆記 除錯

2022-08-31 18:48:09 字數 1019 閱讀 8324

準備工作需要的是:

核心bug的原因可能有:

核心bug發作的症狀可能有:

這裡說的列印是指的核心的格式化列印函式printk(),因為它有自己的一些特殊的功能:

核心訊息是儲存在乙個環形佇列中,這個環形佇列就是它的記錄緩衝區

核心在同一時間只能儲存16kb的核心訊息,再多的話新訊息就會覆蓋老訊息,讀寫都是按照環形佇列方式操作的

優點:可以從/proc/kmsg檔案中,也可以通過syslog()系統呼叫讀取這些訊息,預設是/proc方式

兩種情況klogd都會阻塞,知道有新的核心訊息可供讀出,喚醒之後預設處理是將訊息傳給syslogd

可以通過-c標誌來改變終端的記錄等級

將它接收到的所有訊息新增到乙個檔案中,預設是/var/log/messages

oops是核心告知使用者有不幸發生的最常用的方式

核心很難自我修復,也不能將自己殺死,只能發布oops

oops發生的時機:

這個功能可以通過定義config_magic_sysrq配置選項來啟用

sysrq(系統請求)鍵在大多數鍵盤上都是標準鍵

該功能被啟用時,無論核心出於什麼狀態,都可以通過特殊的組合鍵和核心進行通訊

gdb:

可以使用標準的gnu偵錯程式對正在執行的核心進行檢視。

針對核心啟動偵錯程式的方法與針對程序的方法大致相同:

侷限性:

使用uid作為選擇條件:一般情況下,加入特性時,只要保留原有的演算法而把新演算法加入到其他位置上,基本就能保證安全

使用條件變數:

如果**與程序無關,或者希望有乙個針對所有情況都能使用的機制來控制某個特性,可以使用條件變數

使用統計量:

這種方法常用於使用者需要掌握某個特定事件的發生規律的時候

方法是建立統計量,並提供某種機制訪問其統計結果

重複頻率限制

當系統的除錯資訊過多的時候,有兩種方式可以防止這類問題發生:

重複頻率限制

發生次數限制

這一章中 ,學到了有關核心bug和除錯的很多知識。

《Linux核心設計與實現》第十八章讀書筆記

需要 1.乙個bug。2.乙個藏匿bug的核心版本。3.相關核心 的知識和運氣。在使用者級的程式裡,bug常常表現得很直截了當 但在核心中卻不那麼清晰。核心中bug多種多樣,不僅產生原因千奇百怪,表象也變化多端。如 從隱藏在源 中的錯誤到展現出來的bug,往往是經歷一系列連鎖反應的時間才可能觸發的。...

第十八章 B樹

施工中施工中 基本操作主要包括 搜尋b樹,建立空b樹,插入關鍵字。18.3放出刪除關鍵字的 class program region 磁碟操作 為結點初始化對應的磁碟頁 private static node t allocate node t 磁碟寫操作 private static void d...

第十八章 定製特性

目錄 18.1 使用定製特性 18.2 定義自己的特性類 18.3 特性構造器和字段 屬性資料型別 18.4 檢測定製特性 18.5 兩個特性例項的相互匹配 18.6 檢測定製特性時不建立從attribute派生的物件 18.7 條件特性類 定製特性 利用定製特性,可宣告式地為自己的 構造新增註解來...