制造內核崩潰並使用crash分析內核崩潰產生的vmcore文件


制造內核崩潰並使用crash分析內核崩潰產生的vmcore文件
1,安裝kernel-debuginfo$(uname -r).rpm和kernel-debuginfo-common-$(uname -r).rpm
2,開啟內核崩潰轉儲
service kdump start
3,開啟Magic System Request Key功能
echo 1 >/proc/sys/kernel/sysrq
4,永久開啟Magci System Request Key功能
編輯/etc/sysctl.conf文件使kernel.sysrq的值為1,1表示開啟 0表示關閉
vim /etc/sysctl.conf 
kernel.sysrq = 1 
5,制造系統崩潰
echo c >/proc/sysrq-trigger
6,等待系統重啟后重新登錄進入分析崩潰產生的vmcore文件
6.1 使用crash分析vmcore文件
crash   /usr/lib/debug/lib/module/2.6.32-431.el6.x86_64/vmlinux   /var/crash/127.0.0.1-2017-04-05-15\:12\:12/vmcore
 
6.2 查看崩潰前的系統調用
crash> bt
 
從上圖我們看到了一個異常[exception RIP: sysrq_handle_crash+22]。下面進一步對這個調用的函數進行分析
6.3 反匯編該段函數
crash> dis -l  sysrq_handle_crash+22
 
如圖可以看到出現異常的地方是在/usr/src/debug/kernel-2.6.32-431.el6/linux-2.6.32-431.el6.x86_64/drivers/char/sysrq.c:文件的130行的地方,接下來我們查看一下該文件的130行寫着什么
6.4 分析異常函數所對應的文件源碼
 
從上圖可以看出該函數是強制崩潰,代碼也給出了注釋:/* force panic */ ,把這段代碼copy出來用gdb進行調試會發現報SIGSEGV的錯,如下圖
 
program received signal SIGSEGV,Segmentation fault. 經過查閱資料得知SIGSEGV信號是無效的的內存訪問。就這樣問題被一步一步的找出了,此處是人為調用了系統的強制崩潰,只是為了幫助理解分析系統崩潰的思路和過程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM