Linux核心除錯方法總結之sysrq

2021-08-20 09:33:15 字數 1281 閱讀 6420

sysrq

【用途】

sysrq被稱為」魔術組合鍵」, 是內置於linux核心的除錯工具。只要核心沒有完全鎖住,不管核心在做什麼事情,使用這些組合鍵都可以蒐集包括系統記憶體使用、cpu任務處理、程序執行狀態等系統執行資訊。

【原理】【核心幫助文件kernel/documentation/sysrq.txt】

首先,核心配置選項中要使能config_magic_sysrq選項,這樣系統啟動之後,會生成/proc/sysrq-trigger節點用於除錯。

其次,可以在/etc/sysctl.conf中設定kernel.sysrq=1預設使能sysq功能。也可以通過寫/proc/sys/kernel/sysrq節點動態使能sysrq功能。寫入不同的值使能不同的功能:

0 - disable sysrq completely

1 - enable all functions of sysrq

2 - enable control of console   logging level

4 - enable control of keyboard (sak,   unraw)

8 - enable debugging dumps of   processes etc.

16 - enable sync command

32 - enable remount read-only

64 - enable signalling of processes   (term, kill, oom-kill)

128- allow reboot/poweroff

256- allow nicing of all rt tasks

【使用說明】

#echo m > /proc/sysrq-trigger 匯出記憶體分配資訊

#echo t > /proc/sysrq-trigger 匯出當前任務狀態資訊

#echo p > /proc/sysrq-trigger 匯出當前cpu暫存器和標誌位資訊

#echo c > /proc/sysrq-trigger 產生空指標panic事件,人為導致系統崩潰

#echo s > /proc/sysrq-trigger 即時同步所有掛載的檔案系統

#echo u > /proc/sysrq-trigger 即時重新掛載所有的檔案系統為唯讀

#echo w > /proc/sysrq-trigger轉儲處於uninterruptable阻塞狀態的任務

核心除錯方法

跟普通應用程式一樣,列印資訊是最直接的除錯手段,通過列印資訊來獲得核心執行的情況和狀態。功能 通過控制台把核心資訊按照日誌級別列印出來。檢視當前的系統的列印等級 cat proc sys kernel printk 7 4 1 7這裡四個引數的意義 如下 7 當前控制台命令級別,只要小於這個的命令級...

Linux核心除錯之dump stack的簡單使用

剛剛接觸核心,在除錯過程中用printk列印資訊當然是直接有效的辦法,但當我們不知到乙個函式或者乙個模組到底在 出了問題時我們可以利用dump stack有效的找到問題的根源,下面只是簡單的給出了使用方法。下面是使用例子 makefile檔案 obj m hello.o kernelbuild li...

linux 核心除錯

debug.hacks 一書中,介紹了如果除錯核心問題,在第五章的 實踐核心除錯 總體來說,有一下的方法來除錯核心 1.用kgdb單步除錯。具體請參見 2.加列印printk來定位。3.根據核心出錯的kernel panic oops資訊,反彙編,定位問題 4.編寫復現程式,或者創造復現條件。5.g...