介紹
通常所說的“系統(tǒng)崩潰”是指系統(tǒng)檢測到無法恢復(fù)的錯誤并重新啟動的情況。
引起崩潰的錯誤通常是由處理器硬件檢測的,處理器硬件在 ROM 監(jiān)視器中自動派生出特殊的錯誤處理代碼。ROM 監(jiān)視器可以識別錯誤,打印消息,保存故障信息并重新啟動系統(tǒng)。
開始之前
e=conv>規(guī)則
有關(guān)文件規(guī)則的更多信息,請參閱 Cisco Technical Tips Conventions.
前提條件
本文沒有任何特定的前提條件。
所使用組件
本文不限于任何特定的軟硬件版本。
獲得有關(guān)崩潰的信息
在路由器崩潰的情況下,最重要的工作是在對路由器進行人工重載或重新加電啟動之前盡可能多地收集有關(guān)崩潰的信息。人工重載或重新加電啟動之后,除 crashinfo 文件中成功保存的信息外,有關(guān)崩潰的所有其他信息都將丟失。下面的輸出內(nèi)容顯示了有關(guān)崩潰的一些信息。
若您可以通過Cisco設(shè)備獲得show version、show stacks、show context或show tech support命令輸出,則可通過這些輸出來顯示潛在的問題和修補方法。若要使用這些信息,登錄并啟用 ,但您必須是注冊 用戶。
命令
說明
show version
最早在Cisco IOS(r)軟件版本10.0中出現(xiàn)的命令。Show version EXEC命令顯示系統(tǒng)硬件配置、軟件版本、配置文件與軟件鏡像的名稱和來源、路由器運行時間和有關(guān)系統(tǒng)重啟過程的信息。
重要提示:若路由器在崩潰后重載(例如加電重啟或使用reload命令),該信息將會丟失。因此,設(shè)法在重載前收集有關(guān)信息?。?!
show stacks
最早在Cisco IOS軟件版本10.0中出現(xiàn)的命令。show stacks EXEC命令用來監(jiān)視程序和中斷程序的堆棧使用情況。在路由器崩潰的情況下,show stacks命令輸出是信息的最重要來源之一。
重要提示: 若路由器在崩潰后重載(例如加電重啟或使用reload命令),該信息將會丟失。因此,設(shè)法在重載前收集有關(guān)信息!
show context
最早在Cisco IOS軟件版本10.3中出現(xiàn)的命令。show context EXEC命令用來在發(fā)生意外事件時顯示非易失性RAM(NVRAM)中保存的信息。上下文信息是處理器和基礎(chǔ)結(jié)構(gòu)所特定的,而軟件版本和運行時間信息則不是。不同路由器類型的上下文信息因此各不相同。show context命令的顯示內(nèi)容包括以下方面:
系統(tǒng)重啟原因
堆棧記錄
軟件版本
信號編號、代碼和路由運行時間信息
崩潰時的所有注冊內(nèi)容
show tech-support
最早出現(xiàn)在Cisco IOS軟件版本11.2中。在報告問題時,此命令非常有助于收集有關(guān)路由器的基本信息。此命令包括:
show version
show running-config
show stacks
show interface
show controller
show process cpu
show process memory
show buffers
console log
若在崩潰時與路由器控制面板相連,您會在崩潰期間看到類似以下信息的顯示內(nèi)容:
*** System received a Software forced crash ***
signal= 0x17, code= 0x24, context= 0x619978a0
PC = 0x602e59dc, Cause = 0x4020, Status Reg = 0x34008002
DCL Masked Interrupt Register = 0x000000f7
DCL Interrupt Value Register = 0x00000010
MEMD Int 6 Status Register = 0x00000000
保存這些信息以及此前的日志。路由器恢復(fù)運行時一定要獲得show stacks命令輸出。
syslog
若路由器設(shè)置為向syslog服務(wù)器發(fā)送日志,則可在syslog服務(wù)器上顯示崩潰前所發(fā)生的事件。但是,在路由器崩潰的情況下,可能不會將最有用的信息發(fā)送到syslog服務(wù)器上。因此,通常情況下,syslog輸出對于排除崩潰故障不是很有用。
crashinfo
crashinfo文件包含有關(guān)當前崩潰的許多有用信息,這些信息保存在bootflash或flash存儲器中。當數(shù)據(jù)或堆棧損壞引起路由器崩潰時,除了常用的show stacks命令輸出外,還需要更多的重載信息來排除這類崩潰故障。
在Cisco 12000千兆位路由器處理器(GRP)、Cisco 7000和7500路由交換處理器 (RSP)以及Cisco 7200系列路由器上,缺省情況下crashinfo被寫入到bootflash:crashinfo中。對于Cisco 7500通用接口處理器2(VIP2),缺省情況下此文件被保存到bootflash:vip2_slot_no_crashinfo中,其中,slot_no為VIP2插槽號碼。對于Cisco 7000路由處理器(RP),缺省情況下此文件被保存到flash:crashinfo中。
有關(guān)更多信息,請參閱 從Crashinfo文件中獲取信息。
core dump
core dump是路由器內(nèi)存鏡像的全面拷貝。這種信息對于解決大多數(shù)類型的崩潰問題是不必要的,但在記錄新的故障時,最好使用這些信息。若要將 debug sanity、scheduler heapcheck process和memory check-interval 1等更多信息添加到core dump 中,則可能需要啟用某些調(diào)試工具。
有關(guān)詳細信息請參閱 創(chuàng)建Core Dumps。
rom monitor
若路由器的config-register設(shè)置以0為結(jié)尾,則崩潰后,路由器可能在ROM監(jiān)視器中終止。若路由器為68k,則提示符為">"。您可通過k命令來獲取堆棧記錄。 若處理器為精簡指令集計算機構(gòu)(RISC),則提示符將為"rommon 1>"。獲取stack 50和show context的輸出。
[page]
崩潰類型
show version和show stacks命令輸出可顯示所發(fā)生崩潰的類型,如:總線錯誤或軟件強制崩潰。您還可以通過crashinfo和show context命令來獲取有關(guān)崩潰類型的信息。對于某些較新的Cisco IOS軟件版本,沒有明確顯示崩潰原因(例如,顯示內(nèi)容為"Signal = x",其中x是一個數(shù)字)。若要了解這些數(shù)字所表示的意義,請參照通用接口處理器崩潰原因代碼例如:"Signal = 23"是指軟件強制崩潰。根據(jù)下面的鏈接來解決路由器上所發(fā)生的特定類型的崩潰:
中斷
地址錯誤
總線錯誤
緩存器異常錯誤
錯誤 - 級別
格式錯誤
非法指令
非法Opcode異常
跳到零錯誤
線路仿真器陷阱
加電
處理器內(nèi)存奇偶校驗錯誤
保留異常
錯誤重新啟動
分段違例異常
共享存儲器奇偶校驗錯誤
SIGTRAP
軟件強制崩潰
跟蹤陷阱
未定義陷阱
意外硬件運行中斷
未知故障
未知重新裝載原因
監(jiān)視器超時
寫總線錯誤中斷