配置Kdump和Crash心得

    Linux內核編程遇到的最麻煩的問題在於內核崩潰,而崩潰的信息在屏幕一閃而過,特別是AS6(2.6.32-x86_64內核),崩潰以後過3~5秒便會自動重啓。這對於遠程服務器調試原本是好事情,由於程序員沒必要跑到機房去親自按下重啓按鈕,可是,崩潰信息也找不到了。Kdump是崩潰轉儲程序,Crash是Kdump轉儲程序過來的分析程序。默認狀況下,Kdump和Crash,以及須要的kexec程序在AS6中已經都有了,咱們須要安裝的僅僅是kernel-debuginfo和其支持包kernel-debuginfo-common。須要注意的是,因爲是內核調試工具,版本號和內核版本號要嚴格一致!(因爲我進行的是內核源碼編譯與安裝,沒有這兩個工具也能在編譯出來的目錄中找到vmlinux,不知道沒有這兩個文件可行不可行)。html

    安裝完畢,開始進行配置。http://www.dedoimedo.com/computers/kdump.html中有完整的配置方法,特別是編譯內核的時候不少選項必須打上(-kdump仍是打上比較好,沒有打上可能也行),按照默認編譯選項,大部分都已經打上標記了。按照教程截圖一步一步走,可是有的過程能夠省略,由於實在不知道應該怎麼配置,呵呵~~linux

    在/boot/grub/menu.lst/中須要添加這樣的參數,即crashkernel=X@Y,其中X是轉儲空間大小(確切的講,是轉儲文件的最大大小),Y是轉儲的內存偏移。各類參考資料,包括官方給出的資料都是填寫128M@16M,可是有的時候,16M偏移的內存已經被佔用。這個時候,須要改爲32M,相應的,在make menuconfig 時候的編譯選項CONFIG_PHYSICAL_START=0x1000000 也須要改爲0x2000000。發生內存衝突時候,kdump服務起不來,報錯是缺乏crashkernel這個啓動選項,而官方的文檔中的解決方法只是說從新檢查這個啓動文件的書寫,真是很迷惑人。我檢查不少次都沒有發現問題,最終搜索一下午,在網上的一個bug報告中發現了這個問題,唬人呀!程序員

    在最後的配置過程當中,官方文檔給出這一步/usr/local/sbin/kexec -l /boot/vmlinuz-`uname -r` --initrd=/boot/initrd-`uname -r`--command-line=  `cat /proc/cmdline` ,而AS6加載的不是initrd,而是initramfs之類的鏡像。兩種都嘗試了一通,結果都沒成功。因而乾脆不作了,竟然不要緊!多是默認配置比較好吧。相關的,後面兩個命令kexec -e 和kexec -p 也無法進行。編程

    此外,AS6中,若是沒有手動安裝kexec,其目錄應該是在/sbin下,而不是官方文檔給出的/usr/local/sbin/下面。服務器

    配置完成後,重啓,啓用kdump服務,若是重啓以前執行了chkconfig kdump on ,正常的話,kdump應該是起來的。使用echo c > /proc/sysrq-trigger 命令形成內核panic,會發現關機時候多了個copying data 的過程,下面還有個百分比的進度。Good,kdump起做用了。less

    自動重啓結束,會發現相似var/crash/(時間戳)/vmcore的文件,這就是崩潰轉儲文件。能夠用crash工具進行查看了。crash的第一個參數是vmlinux的文件,應該是使用debuginfo工具生成的文件/usr/lib/debug/lib/modules/(uname -r)/vmlinux,可是很差使,報錯。發如今編譯內核的源碼目錄中也有個vmlinux文件,拿來試試,好使,意外收穫,呵呵~~第二個參數就是剛纔的那個轉儲文件vmcore了。log命令能夠看到完整的日誌,真的很全,其中有IP: [<ffffffff8230dd36>] sysrq_handle_crash+0x16/0x20的信息,sysrq就是剛纔觸發panic的那個,以及完整的函數調用棧、模塊掛載信息等等。不過,此次試驗,上面標記了partial dump。多是我預留的空間過小了,下次把啓動選項的X改大一些試試。crash還有不少其餘命令,必定要學!ide

    此次執行完make modules_install make install以後,就進行了崩潰測試。而平時寫程序調試的時候是不作這兩步操做的,不知道光make以後會不會更新源碼中的vmlinux,要是已經更新了就行了,又能省不少時間~~~函數

    折騰了一天多,仍是頗有成就感的。這比以前師兄們使用虛擬機調試,而後錄屏幕的方法專業多了,並且可以脫離虛擬機,在實機中作,省的那麼卡了。O(∩_∩)O哈哈~但願項目調試時候形成的panic也能用這種方法轉儲~~工具

    bless!測試

相關文章
相關標籤/搜索