HACK#61 生成用户模式进程的进程核心转储

本节介绍使用crash的gcore命令的方法,它生成内核崩溃转储中包含的用户模式进程的核心转储。

使用crash的gcore命令,可以生成内核崩溃转储中包含的用户模式进程的进程核心转储。gcore命令并非crash的标准功能,而是作为扩展模块开发的。

使用案例

由于应用程序(用户模式进程)而造成崩溃时需要使用gcore命令。这时,应用程序的数据包含在内核崩溃转储中,因此某种程度上也可以使用crash进行故障分析。但是,对于应用程序开发人员来说,与要求具有内核相关知识的crash相比,gdb作为应用程序的调试工具,使用起来更加方便。使用gcore命令将内核崩溃转储内的应用程序数据作为进程核心转储提取出来,就可以使用gdb进行故障分析。

另外,使用gdb还可以对crash命令不提供的下列用户模式进程进行操作:

·用户空间的栈上的回溯。

·显示代码级别上的执行点。

与gdb一样,也可以从crash获取用户模式进程的符号信息,这将在后面介绍。

小贴士:应用程序造成内核崩溃的情况很多,例如,在以确保较高可用性为目的的群集环境下运行应用程序的情况。在这种群集环境下,为了缩短检测出故障时的节点切换时间,有时会通过刻意造成崩溃来停止活动节点。与一般的关闭(shutdown)处理方法相比,崩溃时不用结束运行中的应用程序,速度相应得到提高。应用程序的数据包含在崩溃时生成的内核崩溃转储中,因而此后也可以进行故障分析。