本文档说明了在Cisco IOS®软件中启用核心转储时可以使用的各种选项。
注意:很难获取核心转储。只有能够访问源代码和详细内存映射的思科技术人员必须尝试解释核心转储。在许多平台上,使用crashinfo功能可能会使核心转储变得不必要。有关详细信息,请参阅从 Crashinfo 文件检索信息。
Cisco 建议您了解以下主题:
本文档中的信息基于以下软件和硬件版本:
Cisco IOS软件版本12.0及更高版本
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
当路由器崩溃时,请记住获取路由器的整个内存内容的副本,该内存内容称为核心转储。您的技术支持代表使用核心转储来确定故障原因。路由器在重新加载之前将内存内容写入服务器。并非所有崩溃都会产生核心转储。有关详细信息,请参阅崩溃类型。
当路由器尝试转储核心时,始终捕获控制台日志。控制台日志提供有关崩溃的信息。此外,ROM Monitor(ROMMON)通常在崩溃时将信息打印到控制台(并且仅打印到控制台)。
注意:核心转储不是解决大多数崩溃问题所必需的。在路由器在网络中运行时创建核心转储可能会中断网络运行。仅在技术支持代表的指导下使用本文档中的命令。
设置路由器以生成核心转储的基本方法有四种:
通过文件传输协议(FTP)
通过远程复制协议(RCP)
通过闪存盘
通过简单文件传输协议(TFTP)
每种方法都使用以下配置命令:
异常区域大小大小
此命令指定异常时内存池的区域大小。在进程内存损坏时使用异常时间内存池。size参数以字节表示,您可以将大小配置为1024到65536字节。
exception core-file filename [compress]
此命令指定核心转储文件的名称,而不是默认名称。要恢复为默认名称,请使用此命令的no形式。
有关本文档中命令的详细信息,请参阅命令参考工具(仅限注册客户)。
使用exception region-size命令定义少量内存,以在处理器内存池损坏时用作回退池。这有助于防止核心转储过程中发生内存故障。size参数以字节表示,您可以将大小配置为1024到65536字节,默认值为16384字节。将异常区域大小配置为65536字节,以增加成功进行核心转储的机会。
默认情况下,处理器内存核心转储写入名为“hostname -core”的文件,其中hostname 是路由器的名称,该名称由hostname 配置命令定义。如果路由器具有输入/输出(I/O)内存(例如Cisco 7200),也可以创建I/O内存核心转储,并写入文件“hostname -coreiomem”。
使用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。
当思科技术支持代表请求您提供核心转储文件时,您可以通过匿名FTP将核心转储文件发送到思科。FTP服务器是ftp-sj.cisco.com,目录是/传入。
注意:/传入目录不可见。
确保将传输模式设置为二进制。如果文件尚未压缩,请使用通用压缩实用程序(例如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的用户名。
注意:为避免网络拥塞,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,闪存磁盘的存储容量必须超过128MB。要正确获取核心转储,需要更大的闪存。如果闪存盘存在内存短缺,则不会创建核心转储。
要使用闪存磁盘为核心转储配置路由器,请使用以下命令:
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秒检查一次。
这些命令仅在满足配置的条件时使路由器重新启动。如果还配置了异常转储或异常闪存,则路由器会首先创建核心转储。这些命令有助于诊断内存泄漏。
在某些情况下,技术支持代表要求您在配置核心转储时启用调试健全性。在大多数Cisco IOS软件版本中,debug sanity命令都是隐藏的命令,有时对调试内存损坏(尤其是I/O内存损坏)是必需的。当您启用debug sanity时,系统会对已分配的每个缓冲区运行健全性检查,并在释放缓冲区时再次运行健全性检查。
您必须在特权EXEC模式(或启用模式)下发出debug sanity命令。 虽然此命令使用一些CPU容量,但debug sanity不会显着影响路由器的功能。与其他debug 命令一样,debug sanity不会保存在配置中,因此在系统重新启动后无法继续运行。
并非所有类型的崩溃都需要您启用调试健全性。仅当您的技术支持代表请求您启用此命令时,才使用debug sanity。
要禁用健全性检查,请使用undebug sanity特权执行命令。
配置路由器进行核心转储后,测试设置。
Cisco IOS软件在特权EXEC模式(或启用模式)下提供特殊write core命令,使路由器在不重新加载的情况下生成核心转储。
如果成功,核心转储文件是各个内存区域的大小。请记住,整个内存区域被转储,而不仅仅是正在使用的内存。
在路由器出现故障但未崩溃时,write core命令也很有用。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
24-Jun-2008 |
初始版本 |