本文件說明使用偵錯命令的一般準則,包括在 Cisco IOS® 平台上可用的 debug ip packet 命令。
思科建議您瞭解以下主題:
使用主控台、輔助和 VTY 連接埠連接到路由器.
常規Cisco IOS配置問題。
解釋Cisco IOS調試輸出。
本文件所述內容不限於特定軟體和硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
本檔案將提供在Cisco IOS®平台上使用debug命令的一般准則。其中還包括示例和條件調試概述。
debug特權EXEC命令提供有關網路事件、協定狀態、資料包處理和常規網路活動的診斷資訊。這些命令有助於在故障排除期間確定特定問題的原因。
但是,debug命令可能會生成大量輸出資訊,並會影響裝置效能,尤其是在已經處理高流量或高CPU使用率的路由器上。因此,請謹慎地運行debug命令,僅在需要排除故障時運行。
附註:本檔案沒有說明如何使用或解釋特定的debug命令及其輸出。有關單個debug命令的詳細資訊,請參閱相應的Cisco Debug命令參考文檔。
請謹慎運行debug命令。通常,在排除特定故障時,僅在技術支援代表的指導下使用這些命令。
啟用調試可能會中斷路由器運行,尤其是在網路負載較重時。如果啟用日誌記錄,則當控制檯埠因日誌消息超載時,訪問伺服器可能會間歇性地凍結。
執行debug指令之前,請考慮指令可產生的輸出量以及偵錯作業階段可執行的時間。
例如,在具有一個基本速率介面的路由器上,debug isdn q931不太可能影響系統。但是,在具有完整E1配置的AS5800上運行相同的debug命令可生成足夠的輸出以使裝置掛起或停止響應。
在調試之前,請通過運行show processes cpu命令檢查CPU負載。在啟用調試之前,請確認是否有足夠的CPU容量。
例如,如果具有ATM介面的Cisco 7200路由器正在運行橋接,則重新啟動路由器可能會佔用大量CPU資源,具體取決於配置的子介面數。對於每個虛電路(VC),必須生成橋接協定資料單元(BPDU)資料包。在此關鍵時段啟用調試可能會導致CPU利用率大幅提高,從而導致裝置掛起或失去網路連線。
附註:偵錯執行期間,您通常不會看到路由器提示,尤其在密集偵錯時。但是,在大多數情況下,可以運行no debug all或undebug all命令來停止調試。
除了上述幾點之外,請務必了解調試對平台穩定性的影響。在啟用任何debug指令之前,您還必須考慮必須在路由器上連線哪個介面。
路由器可顯示各種介面的偵錯輸出,包括主控台、輔助和 VTY 連接埠。路由器也能將內部緩衝的訊息記錄到外部 UNIX Syslog 伺服器。
如果在正常配置下連線控制檯,則無需額外工作。偵錯輸出必然會自動顯示。但是,請確保logging console level已按需要設定,並且未使用no logging console命令禁用日誌記錄。
警告:對路由器的主控台連接埠執行過多偵錯可能導致停擺。這是因為路由器會自動將主控台輸出的優先順序擺在其他路由器功能之前。如果路由器正在處理指向控制檯埠的大型調試輸出,它可能會掛起。如果調試輸出過大,請使用vty(telnet)埠或日誌緩衝區來獲取調試。
附註:根據預設,主控台連接埠已啟用記錄。即使您使用其他埠或方法(例如aux、vty或緩衝區)來捕獲輸出,控制檯埠始終會處理調試輸出。思科建議在正常操作條件下運行no logging console命令,該命令始終處於啟用狀態,並使用其他方法捕獲調試。在必須使用控制檯的情況下,臨時重新開啟日誌控制檯。
如果通過輔助埠連線,請運行terminal monitorcommand命令。此外,請確認no logging on 命令未在路由器上啟用。
附註:如果使用aux埠監控路由器,請記住,當路由器重新啟動時,aux埠不會顯示啟動順序輸出。連線到控制檯埠以檢視引導順序。
如果通過輔助埠或telnet連線,請鍵入terminal monitor命令。另請確認no logging on命令未使用。
預設記錄裝置是主控台;除非另有指定,否則所有訊息都會顯示在主控台上。
要將消息記錄到內部緩衝區,請運行logging buffered路由器配置命令。以下是該命令的完整語法:
logging buffered no logging buffered
日誌記錄緩衝命令將日誌消息複製到內部緩衝區,而不是將它們寫入控制檯。緩衝有循環進行的性質,因此新的訊息會覆寫舊訊息。
要顯示緩衝區中記錄的消息,請使用特權EXEC命令show logging。第一個顯示的訊息是緩衝區中最舊的訊息。您可以指定緩衝區大小和要記錄的消息的嚴重性級別。
附註:在輸入緩衝區大小之前,確保機箱中有足夠的可用記憶體。使用show proc mem命令檢視可用記憶體。
no logging buffered命令取消緩衝區的使用並將消息寫入控制檯(預設值)。
要將消息記錄到syslog伺服器主機,請運行logging router configuration命令。檢視此命令的完整語法:
loggingno logging
logging命令標識要接收日誌記錄消息的系統日誌伺服器主機。< ip-address > 引數是主機的 IP 位址。通過多次發出此命令,可以構建接收日誌記錄消息的系統日誌伺服器清單。
theno logging命令從syslogs清單中刪除具有指定地址的syslog伺服器。
設定終端模擬器軟體,以便它將調試輸出捕獲到檔案中。請參閱您的軟體終端模擬器文檔。
啟用運行service timestamps命令的毫秒(msec)時間戳:
router(config)#service timestamps debug datetime msec router(config)#service timestamps log datetime msec
這些命令以MMM DD HH:MM:SS格式將時間戳新增到調試,根據系統時鐘指示日期和時間。如果未設定系統時鐘,則日期和時間前面加星號(*),表示日期和時間可能不正確。
一般建議配置毫秒時間戳,因為這樣在檢視調試輸出時可以更清晰地顯示資訊。毫秒時間戳可以更好地指示各種調試事件的相對計時。但是,當控制檯埠輸出大量消息時,它們無法與事件的實際時間相關聯。
例如,如果在具有200個VC的框上啟用debug x25all,且輸出記錄到緩衝區(運行logging console 和logging buffered命令),則debug輸出(緩衝區內)中顯示的時間戳不能是資料包通過介面的準確時間。因此,請勿使用毫秒時間戳記來證明效能問題,但可以用於取得事件發生時間的相對資訊。
要停止調試,請使用no debug all或undebug all命令。使用show debug指令驗證偵錯是否已關閉。
請記住,命令no logging console和terminal no monitor只會阻止輸出分別輸出到控制檯、aux或vty上。它不會停止調試並耗盡路由器資源。
在傳統Cisco IOS®路由器上,debug ip packet主要會看到程式交換流量。通過快速交換或CEF轉送的流量不會出現,除非將轉送強制進入進程交換路徑。但是,因為它會為每個資料包生成輸出,所以輸出可能很長,並且會導致路由器掛起。因此,請僅按照本節所述的最嚴格控制執行debug ip packet。
限制debug ip packet輸出的最佳方式是建立與偵錯相關聯的存取清單。只有符合存取清單條件的資料包才能使用debug ip packet。此存取清單不需要套用在任何介面,但要套用在偵錯作業上。
執行偵錯IP封包之前,請注意路由器預設使用快速交換,或若設定使用CEF交換,也可使用CEF交換。這意味著,一旦這些技術到位,資料包不提供給處理器,調試將不顯示任何內容。若要使此功能生效,您必須在沒有ip route-cache(適用於單點傳播封包)或沒有ip mroute-cache(適用於多點傳播封包)的路由器上停用快速交換。 此動作務必套用在流量預期會經過的介面。使用show ip route指令驗證這點。
附註:在較新的平台上,轉發通常由CEF或基於硬體的交換處理,因此禁用快速交換不再適用或建議使用。因此,debug ip packet可能無法可靠地顯示傳輸流量,而現代故障排除通常依賴於平台特定的捕獲或硬體工具。
啟用有條件觸發偵錯功能後,路由器會在封包進入或離開路由器的特定介面時產生偵錯訊息;封包從其他介面進入或離開時,路由器就不會產生偵錯輸出。
請查看條件式偵錯的簡易實作過程。以下列情境為例:下方所示的路由器 (trabol) 有兩個介面(序列 0 和序列 3),兩者都執行 HDLC 封裝。
您可以運行normaldebug serial interface命令來觀察所有介面上接收到的HDLC keepalive。您可以觀察兩個介面上的keepalive:
traxbol#debug serial interface Serial network interface debugging is on traxbol# *Mar 8 09:42:34.851: Serial0: HDLC myseq 28, mineseen 28*, yourseen 41, line up ! -- HDLC keeplaive on interface Serial 0 *Mar 8 09:42:34.855: Serial3: HDLC myseq 26, mineseen 26*, yourseen 27, line up ! -- HDLC keeplaive on interface Serial 3 *Mar 8 09:42:44.851: Serial0: HDLC myseq 29, mineseen 29*, yourseen 42, line up *Mar 8 09:42:44.855: Serial3: HDLC myseq 27, mineseen 27*, yourseen 28, line up
為介面serial 3啟用條件調試,這意味著只顯示介面serial 3的調試。執行debug interface <interface_type interface_number>命令:
traxbol#debug interface serial 3 Condition 1 set
運行show debug condition命令以驗證條件調試是否處於活動狀態(介面serial 3的條件處於活動狀態):
traxbol#show debug condition Condition 1: interface Se3 (1 flags triggered) Flags: Se3 traxbol#
現在只顯示介面serial 3的調試:
*Mar 8 09:43:04.855: Serial3: HDLC myseq 29, mineseen 29*, yourseen 30, line up *Mar 8 09:43:14.855: Serial3: HDLC myseq 30, mineseen 30*, yourseen 31, line up
運行undebug interface <interface_type interface_number>命令以刪除條件式調試。建議您先關閉偵錯(例如,使用 undebug all),再移除條件式觸發偵錯。這麼做是為了避免偵錯輸出因為條件已移除而蜂擁而至。
traxbol#undebug interface serial 3 This condition is the last interface condition set. Removing all conditions can cause a flood of debugging messages to result, unless specific debugging flags are first removed. Proceed with removal? [yes/no]: y Condition 1 has been removed traxbol
您可以觀察介面Serial 0和Serial 3顯示的調試:
*Mar 8 09:43:34.927: Serial3: HDLC myseq 32, mineseen 32*, yourseen 33, line up *Mar 8 09:43:44.923: Serial0: HDLC myseq 35, mineseen 35*, yourseen 48, line up
警告:有些偵錯作業會給自己設條件。例如atm調試,在ATM調試中,必須明確指定必須為其啟用調試的介面,而不是在所有atm介面上啟用調試並指定條件。
本節示範將 ATM 封包偵錯限制在一個子介面的正確方法:
arielle-nrp2#debug atm packet interface atm 0/0/0.1 !--- Note that you explicitly specify the sub-interface to be used for debugging ATM packets debugging is on Displaying packets on interface ATM0/0/0.1 only arielle-nrp2# *Dec 21 10:16:51.891: ATM0/0/0.1(O): VCD:0x1 VPI:0x1 VCI:0x21 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2 TYPE:0007 Length:0x278 *Dec 21 10:16:51.891: 0000 FFFF FFFF FFFF 0010 7BB9 BDC4 0800 4500 025C 01FE 0000 FF11 61C8 0A30 *Dec 21 10:16:51.891: 4B9B FFFF FFFF 0044 0043 0248 0000 0101 0600 0015 23B7 0000 8000 0000 0000 *Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0010 7BB9 BDC3 0000 0000 0000 0000 0000 0000 *Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:16:51.895: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:16:51.895: arielle-nrp2#
如果嘗試在所有介面上啟用atm debugging(使用已應用的條件),則路由器在擁有大量ATM子介面時可能會掛起。ATM 偵錯的錯誤方法如下列所示。
在此案例中,您可看到已套用條件,但也會發現條件沒有生效。您還是會看見其他介面的封包。
在本實驗場景中,您只有兩個介面,流量非常小。如果介面數很高,則所有介面的調試輸出也會非常高,並且可能導致路由器掛起:
arielle-nrp2#show debugging condition Condition 1: interface AT0/0/0.1 (1 flags triggered) Flags: AT0/0/0.1 ! -- A condition for a specific interface. arielle-nrp2#debug atm packet ATM packets debugging is on Displaying all ATM packets arielle-nrp2# *Dec 21 10:22:06.727: ATM0/0/0.2(O): ! -- You see debugs from interface ATM0/0/0/.2, even though the condition ! -- specified ONLY AT0/0/0.1 VCD:0x2 VPI:0x5 VCI:0x37 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2 TYPE:000E Length:0x2F *Dec 21 10:22:06.727: 0000 0000 0180 0000 107B B9BD C400 0000 0080 0000 107B B9BD C480 0800 0014 *Dec 21 10:22:06.727: 0002 000F 0000 *Dec 21 10:22:06.727: un a *Dec 21 10:22:08.727: ATM0/0/0.2(O): VCD:0x2 VPI:0x5 VCI:0x37 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2 TYPE:000E Length:0x2F *Dec 21 10:22:08.727: 0000 0000 0180 0000 107B B9BD C400 0000 0080 0000 107B B9BD C480 0800 0014 *Dec 21 10:22:08.727: 0002 000F 0000 *Dec 21 10:22:08.727: ll *Dec 21 10:22:10.727: ATM0/0/0.2(O): VCD:0x2 VPI:0x5 VCI:0x37 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2 TYPE:000E Length:0x2F *Dec 21 10:22:10.727: 0000 0000 0080 0000 107B B9BD C400 0000 0080 0000 107B B9BD C480 0800 0014 *Dec 21 10:22:10.727: 0002 000F 0000 *Dec 21 10:22:10.727: *Dec 21 10:22:12.727: ATM0/0/0.2(O): VCD:0x2 VPI:0x5 VCI:0x37 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2 TYPE:000E Length:0x2F *Dec 21 10:22:12.727: 0000 0000 0080 0000 107B B9BD C400 0000 0080 0000 107B B9BD C480 0800 0014 *Dec 21 10:22:12.727: 0002 000F 0000 *Dec 21 10:22:12.727: *Dec 21 10:22:13.931: ATM0/0/0.1(O): !--- You also see debugs for interface ATM0/0/0.1 as you wanted. VCD:0x1 VPI:0x1 VCI:0x21 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2 TYPE:0007 Length:0x278 *Dec 21 10:22:13.931: 0000 FFFF FFFF FFFF 0010 7BB9 BDC4 0800 4500 025C 027F 0000 FF11 6147 0A30 *Dec 21 10:22:13.931: 4B9B FFFF FFFF 0044 0043 0248 0000 0101 0600 001A 4481 0000 8000 0000 0000 *Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0010 7BB9 BDC3 0000 0000 0000 0000 0000 0000 *Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:22:13.935: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
| 修訂 | 發佈日期 | 意見 |
|---|---|---|
5.0 |
22-Jun-2026
|
更新的簡介間距、文章中的其他間距、語法、拼寫、縮排。 |
4.0 |
19-Aug-2024
|
重新認證 |
2.0 |
29-Apr-2022
|
已更新並刪除損壞的連結。 |
1.0 |
02-Dec-2013
|
初始版本 |