本文档说明可用于在Cisco IOS®软件中启用核心转储的各种选项。
注意:核心转储可能难以获得。只有有权访问源代码和详细内存映射的Cisco技术人员必须尝试解释核心转储。在许多平台上,使用crashinfo功能可能使核心转储变得不必要。有关详细信息,请参阅从 Crashinfo 文件检索信息。
Cisco 建议您了解以下主题:
本文档中的信息基于以下软件和硬件版本:
Cisco IOS软件12.0版及更高版本
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
路由器崩溃时,切记要获取路由器整个内存内容的副本,该副本称为core dump。您的技术支持代表使用核心转储来确定崩溃的原因。路由器会在重新加载之前将内存内容写入服务器。并非所有崩溃都会生成核心转储。有关详细信息,请参阅崩溃类型。
当路由器尝试转储核心时,请始终捕获控制台日志。控制台日志提供有关崩溃的信息。此外,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-coreomem”。
请使用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。
注意:/传入目录不可见。
确保将传输模式设置为二进制。如果文件尚未压缩,请使用常用的压缩实用程序(例如gzip或zip)对其进行压缩。
另外,请确保包括crashinfo文件(如果可用)和core dump。如果硬件或软件支持此功能,则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的用户名。
注意:为避免网络拥塞,Cisco强烈建议您直接将路由器连接到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。要正确获取core dump,需要更大的闪存空间。如果闪存盘内存不足,则不会创建核心转储。
要使用闪存盘配置核心转储的路由器,请使用此命令:
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
除Basic Setup部分中的命令外,还可使用本部分中的配置命令。
要调试某些内存问题,可以导致路由器创建核心转储,并在发生违反某些内存大小参数的情况下重新启动。请使用以下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模式(或启用模式)下发出debug sanity命令。虽然此命令使用一些CPU容量,但debug sanity不会严重影响路由器的功能。与其他debug命令一样,debug sanity不会保存在配置中,因此不会在系统重新启动后继续运行。
并非所有类型的崩溃都需要您启用debug sanity。仅当技术支持代表请求您启用此命令时,才应使用debug sanity。
要禁用健全性检查,请使用undebug sanity特权EXEC命令。
配置路由器进行核心转储后,测试设置。
Cisco IOS软件在特权EXEC模式(或启用模式)下提供特殊的write core命令,可使路由器在不重新加载的情况下生成核心转储。
如果成功,则核心转储文件是各个内存区域的大小。请记住,转储的是整个内存区域,而不仅仅是正在使用的内存。
write core命令在路由器发生故障但尚未崩溃的情况下也十分有用。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
24-Jun-2008 |
初始版本 |