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...