在使用 debug 命令之前,请务必阅读以下重要原则:

⚠️ 重要警告:使用 debug 的黄金法则
- 生产环境慎用:在业务高峰期或关键生产设备上,绝对避免使用
debug,它会使 CPU 占用率飙升,可能导致设备处理数据包能力下降、丢包、甚至瘫痪。 - 非必要不使用:
debug是最后的手段,应首先尝试使用display、ping、tracert等非侵入性命令进行诊断。 - 最小化原则:如果必须使用,请精确地调试你关心的功能,避免使用
debugging all这样的宽泛命令。 - 随时准备停止:在输入
debug命令后,应时刻关注设备的 CPU 和内存使用率,一旦达到预期目的或发现问题,立即停止debug。 - 做好备份:在进行任何可能导致配置变更的操作(包括开启
debug)前,建议备份当前配置。
如何开启和关闭 Debug
debug 命令本身不会立即生效,它需要配合 debugging 命令来开启,使用 undo debugging 或 undo terminal monitor 来关闭。
基本语法
# 进入系统视图 system-view # 开启某个功能的调试信息 debugging [功能模块] [具体参数] # 关闭所有调试信息(最常用、最安全的关闭方式) undo debugging all # 或者,关闭终端的实时信息输出(如果调试信息打印到终端) undo terminal monitor
常用 Debug 命令示例
以下是一些常见的应用场景和对应的 debug 命令,这些命令需要在相应的视图下执行。
场景 1:调试 OSPF 路由协议
当你怀疑 OSPF 邻居关系无法建立或路由信息不正确时,可以调试 OSPF 的报文交互。
# 进入系统视图 system-view # 开启 OSPF 报文调试(LSA、Hello、DBD 等都会打印) debugging ospf packet # 开启 OSPF 事件调试(邻居状态变化等) debugging ospf event # 开启 OSPF LSA 调试 debugging ospf lsa # 停止所有 OSPF 调试 undo debugging ospf
场景 2:调试 BGP 路由协议
当你怀疑 BGP 邻居关系(Session)问题或路由通告/接收有问题时。

# 进入系统视图 system-view # 开启 BGP 事件调试(邻居状态机变化、错误等) debugging bgp event # 开启 BGP 报文调试(Open、Update、Keepalive、Notification 等) debugging bgp packet # 停止所有 BGP 调试 undo debugging bgp
场景 3:调试数据转发
当你怀疑特定数据包没有被正确转发时,可以调试数据包的转发过程,这通常很消耗资源,请谨慎使用。
# 进入系统视图 system-view # 调试所有数据包的转发过程(极其消耗性能,仅在实验室环境使用) debugging forwarding packet # 调试特定源/目的 IP 地址的数据包转发 # 假设源IP为 192.168.1.100, 目的IP为 10.1.1.1 debugging forwarding packet source-ip 192.168.1.100 destination-ip 10.1.1.1 # 停止所有数据转发调试 undo debugging forwarding
场景 4:调试 DHCP 服务
当客户端无法获取 IP 地址时,可以调试 DHCP 服务器的交互过程。
# 进入系统视图 system-view # 开启 DHCP 服务器调试 debugging dhcp server packet # 开启 DHCP 服务器事件调试 debugging dhcp server event # 停止所有 DHCP 调试 undo debugging dhcp
场景 5:调试 NAT 地址转换
当内网用户无法访问外网时,可以调试 NAT 的转换过程。
# 进入系统视图 system-view # 开启 NAT 表项调试 debugging nat session # 开启 NAT 报文调试 debugging nat packet # 停止所有 NAT 调试 undo debugging nat
场景 6:调试二层接口(如 STP、MAC 地址)
# 进入系统视图 system-view # 调 spanning tree protocol (STP) 事件 debugging stp event # 调接口 MAC 地址学习和老化 debugging mac-address all # 调所有 MAC 地址事件 debugging mac-address interface GigabitEthernet 0/0/1 # 调特定接口 # 停止二层相关调试 undo debugging stp undo debugging mac-address
如何查看 Debug 输出
debug 命令的输出默认会实时打印到你的终端上,如果信息量太大,屏幕会快速刷新,导致你看不清。

-
使用
terminal monitor这个命令用于开启终端的实时信息显示功能,当你通过 Telnet/SSH 登录时,默认是开启的,如果突然看不到输出了,可能是被关闭了。# 开启终端实时信息显示 terminal monitor # 关闭终端实时信息显示(可以用来暂停查看,但推荐用 undo debugging all) undo terminal monitor
-
使用
logfile命令将日志保存到文件 这是在生产环境中进行复杂故障排查的推荐做法,可以避免信息刷屏,并且方便后续分析。# 进入系统视图 system-view # 设置日志文件路径、大小和级别 # 将日志保存到 /var/log/debug.log,最大 10MB,级别为 Informational (6) logbuffer size 10240 logfile user-debug logfile-size 10240 level 6 # 开启日志功能 logfile switch on # 现在开始执行你的 debug 命令,所有输出都会被记录到文件中 debugging ospf packet # ... 完成排查后 ... undo debugging all logfile switch off
如何安全地关闭 Debug
这是最关键的一步。
-
首选命令:
undo debugging all
这个命令会停止所有正在运行的
debug进程,是安全、彻底的关闭方式。 -
备用命令:
undo terminal monitor
这个命令只是停止在你的终端上显示调试信息,但
debug进程可能仍在后台运行,继续消耗资源。除非你知道你在做什么,否则不要只使用这个命令。 -
检查: 在关闭
debug后,可以使用display cpu-usage命令查看 CPU 占用率是否恢复正常。
| 步骤 | 命令/操作 | 说明 |
|---|---|---|
| 准备 | system-view |
进入系统视图,评估风险,非必要不操作。 |
| 开启 | terminal monitor (可选) |
确保终端能显示信息。 |
| 开启 | debugging [具体功能] |
精准开启你需要的调试功能。 |
| 观察 | 实时查看终端或日志文件 | 观察输出,分析问题。 |
| 关闭 | undo debugging all |
立即停止所有调试进程! |
| 验证 | undo terminal monitor (可选) |
停止终端信息显示。 |
| 检查 | display cpu-usage |
确认设备资源已恢复正常。 |
再次强调,debug 是一个强大的工具,但必须谨慎使用,对于绝大多数网络问题,熟练掌握 display 系列命令已经足够解决。
