本文档介绍可用于在Cisco IOS®软件中启用核心转储的各种选项。
注意:核心转储可能难以获取。只有有权访问源代码和详细内存映射的思科技术人员必须尝试解释核心转储。在许多平台上,使用crashinfo功能可能使核心转储变得没有必要。有关详细信息,请参阅从 Crashinfo 文件检索信息。
Cisco 建议您了解以下主题:
本文档中的信息基于以下软件和硬件版本:
Cisco IOS软件版本12.0及更高版本
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
当路由器崩溃时,切记要获取路由器整个内存内容的副本,该副本称为核心转储。您的技术支持代表使用核心转储来确定故障原因。路由器在重新加载之前将内存内容写入服务器。并非所有崩溃都会产生核心转储。有关详细信息,请参阅崩溃类型。
当路由器尝试转储核心时,请始终捕获控制台日志。控制台日志提供有关崩溃的信息。此外,ROM Monitor(ROMMON)通常会在崩溃时将信息打印到控制台(并且只打印到控制台)。
注意:解决大多数故障案例不需要核心转储。当路由器在网络中工作时创建核心转储可能会中断网络运行。仅在技术支持代表的指导下使用本文档中的命令。
设置路由器以生成核心转储有四种基本方法:
通过文件传输协议(FTP)
通过远程复制协议(RCP)
通过闪存盘
通过简单文件传输协议(TFTP)
这些方法都使用以下配置命令:
exception region-size size
此命令指定例外时间内存池的区域大小。例外时间内存池用于防止进程内存损坏。size参数以字节表示,您可以配置从1024到65536字节的大小。
exception core-file filename [compress]
此命令指定核心转储文件的名称,而不是默认名称。要恢复为默认名称,请使用此命令的no形式。
有关本文档中命令的详细信息,请参阅命令参考工具(仅限注册客户)。
当处理器内存池损坏时,使用exception region-size命令定义少量内存用作回退池。这有助于防止在核心转储过程中出现内存故障。size参数以字节表示,您可以配置从1024到65536字节的大小,默认值为16384字节。将exception region-size配置为65536字节,以增加核心转储成功的可能性。
默认情况下,处理器内存核心转储会写入名为“hostname-core”的文件,其中hostname是路由器名称,由hostname配置命令定义。如果路由器有输入/输出(I/O)内存(例如,Cisco 7200),也可以创建I/O内存核心转储,并写入文件“hostname-coriomem”。
使用exception core-file命令覆盖默认核心转储文件名。如果文件服务器具有DOS FAT文件系统,请勿指定长度超过六个字符的文件名。例如,如果使用“exception core-file foobar”配置路由器,则核心转储的处理器内存名称为“foobar”,I/O内存转储的名称为“foobario”(足以提示您有I/O内存转储)。
确保文件服务器上有足够的磁盘空间来容纳多个完整的核心转储。可以使用compress选项压缩核心转储文件。
注意: 将核心转储文件写入闪存磁盘时自动应用压缩。如果使用RCP,则不支持compress选项。
注意:建议使用文件传输协议(FTP)来配置核心转储。
要使用FTP配置核心转储的路由器,请使用以下命令:
ip ftp username username — 此命令用于配置文件传输协议(FTP)连接的用户名。要将路由器配置为尝试匿名FTP,请使用此命令的no形式。
ip ftp password password — 此命令配置FTP连接的密码。
exception protocol ftp — 此命令配置用于核心转储FTP的协议。
exception region-size 65536 — 此命令用于配置区域大小。
exception dump ip-address — 此命令配置在发生崩溃时路由器向其发送核心转储的服务器的ip地址。
注意:为了避免网络拥塞,Cisco强烈建议您直接将路由器连接到FTP服务器,而不使用中间跃点。如果必须经过一个或多个中间跳,可能需要使用ip ftp source-interface命令指定访问FTP服务器要使用的接口。有关详细信息,请参阅配置路由器以使用FTP连接。
如果没有配置用户名和口令,路由器将尝试匿名FTP。
当Cisco技术支持代表请求您提供核心转储文件时,您可以通过匿名FTP将核心转储文件发送到Cisco。FTP服务器为ftp-sj.cisco.com,目录为/incoming。
注意:/incoming目录不可见。
确保将传输模式设置为二进制。如果文件尚未压缩,请使用通用压缩实用程序(例如gzip或zip)压缩它们。
此外,请确保包括crashinfo文件(如果可用)以及核心转储。如果硬件或软件支持此功能,则crashinfo文件可用。有关如何执行此操作的说明,请参阅从Crashinfo文件检索信息。
确保FTP首先工作。使用以下示例:
c7500#copy running-config ftp: Address or name of remote host []? 172.18.125.3 Destination filename [c7500-confg]? Writing c7500-confg ! 2781 bytes copied in 0.944 secs
要使用RCP配置核心转储的路由器,请使用以下命令:
ip rcmd remote-username username — 此命令配置远程用户名,以便在通过远程复制协议(RCP)请求远程复制时使用。
exception protocol rcp — 此命令将用于核心转储的协议配置为RCP。
exception region-size 65536 — 此命令用于配置区域大小。
exception dump ip-address
如果尚未配置用户名,路由器将使用其主机名作为RCP的用户名。
注意:为了避免网络拥塞,思科强烈建议您直接将路由器连接到RCP服务器,而不使用中间跳。如果必须经过一个或多个中间跳,请使用ip rcmd source-interface命令指定用于访问RCP服务器的接口。有关详细信息,请参阅配置路由器以使用rsh和rcp。
确保RCP首先工作。使用以下示例:
c7500#copy running-config rcp: Address or name of remote host []? 172.18.125.3 Destination username [c7500]? Destination filename [c7500-confg]? Writing c7500-confg ! 2781 bytes copied in 0.944 secs
某些路由器平台支持闪存盘作为线性闪存或PCMCIA闪存卡的替代品。这些闪存磁盘存储容量大,因此是捕获核心转储的良好介质。有关支持闪存盘的路由器平台和Cisco IOS软件版本的信息,请参阅Cisco IOS发行说明。
注意:捕获闪存磁盘中的核心转储时,必须确保闪存磁盘的存储容量大于导致核心转储的DRAM内存。例如,如果您的DRAM内存大小为128 MB,则闪存磁盘的存储容量必须超过128 MB。要正确获取核心转储,需要更大的闪存空间。如果闪存盘内存不足,则不会创建核心转储。
要使用闪存磁盘为核心转储配置路由器,请使用以下命令:
exception flash procmem|iomem|all device_name [:partition_number] !--- This command uses a Flash disk to configure the router for a core dump.
show flash all EXEC命令列出可用于exception flash命令的设备。
由于大多数TFTP应用的限制,路由器仅转储前16 MB的核心文件。因此,如果您的路由器的主内存大于16 MB,请不要使用TFTP。有关详细信息,请参阅Cisco IOS TFTP客户端无法传输大小大于16MB的文件。
要使用TFTP为核心转储配置路由器,请使用以下命令:
exception protocol tftp — 此命令将TFTP配置为核心转储的协议。
exception region-size 65536
exception dump ip-address
TFTP是异常协议的默认协议。
注意:为了避免网络拥塞,Cisco强烈建议您直接将路由器连接到TFTP服务器,无需中间跳。如果必须经过一个或多个中间跳,请使用ip tftp source-interface命令指定访问TFTP服务器要使用的接口。
根据使用的TFTP服务器,您可能需要创建具有适当权限的空目标文件,然后路由器才能写入这些文件。
确保TFTP首先工作。使用以下示例:
c7500#copy running-config tftp: Address or name of remote host []? 172.18.125.3 Destination filename [c7500-confg]? ! 2781 bytes copied in 0.944 secs
除基本设置部分中的命令外,还应使用本部分中的配置命令。
为了调试某些内存问题,您可以使路由器创建核心转储,并在某些内存大小参数发生违规时重新启动。使用以下exception memory命令以触发核心转储:
exception memory minimum size — 如果空闲处理器内存量降至配置的阈值以下,此命令将强制崩溃。
exception memory fragment size — 如果Cisco IOS软件无法分配大于所配置阈值的连续处理器内存块,此命令将强制崩溃。
size参数以字节表示,默认情况下每60秒检查一次。
这些命令仅在满足配置条件时才会导致路由器重新启动。如果您还配置了exception dump或exception flash,则路由器将首先创建核心转储。这些命令有助于诊断内存泄漏。
在某些情况下,技术支持代表会请求您在配置核心转储时启用debug sanity。在大多数Cisco IOS软件版本中,debug sanity命令是隐藏的命令,有时是调试内存损坏(尤其是I/O内存损坏)所必需的。当您启用debug sanity时,系统会对分配的每个缓冲区运行健全性检查,并在释放缓冲区时再次运行健全性检查。
必须在特权EXEC模式(或enable模式)下发出debug sanity命令。 虽然此命令使用一些CPU容量,但debug sanity不会显着影响路由器的功能。与其他debug命令一样,debug sanity不会保存在配置中,因此不会在系统重新启动后继续运行。
并非所有类型的崩溃都需要您启用debug sanity。仅当您的技术支持代表请求您启用此命令时,才使用debug sanity。
要禁用健全性检查,请使用undebug sanity特权EXEC命令。
配置核心转储路由器后,请测试设置。
Cisco IOS软件在特权EXEC模式(或enable模式)下提供特殊的write core命令,使路由器无需重新加载即可生成核心转储。
如果成功,则核心转储文件为各个内存区域的大小。请记住,整个内存区域是转储的,而不仅仅是正在使用的内存。
write core命令在路由器发生故障但未崩溃的情况下也非常有用。
| 版本 | 发布日期 | 备注 |
|---|---|---|
1.0 |
10-Dec-2001
|
初始版本 |