注意事项

注意事项:如前所述,crash不能处理一次也没有分配内存的区域或交换出swap out的内存区域。gcore将这些区域全部设置为0。

注意事项:crash命令不能获得通过makedumpfile进行的内核部分转储中排除在转储对象以外的内存区域。想要获得排除在转储区域外的内存区域时,会显示下列信息。


crash>rd-u 0x400000

rd:page excluded:user virtual address:400000 type:"64-bit UVADDR"


也可以将排除在转储对象外的内存区域改写为0进行引用。使用set命令将crash参数zero_excluded改为on。其初始设置为off。


crash>set-v

……

zero_excluded:off

……

crash>set zero_excluded on

zero_excluded:on

crash>rd-u 0x400000

400000:0000000000000000……

在gcore命令处理中获得排除在转储对象外的内存区域时也是一样。这时gcore命令将中断处理,crash返回命令行输入。对内核的部分转储使用gcore命令时,需要将crash参数zero_excluded设置为on。

小贴士:gcore命令生成的进程核心转储所包含的执行信息中包含寄存器信息。这是崩溃时用户进程具有的用户空间中寄存器的值。崩溃时,在用户进程的不同状态下寄存器的退出位置也不同,因此需要根据各状态从适当的位置回收寄存器信息。但是,有时难以指定适当的位置,也有寄存器值自身没有退出的情况,并不一定能够回收全部的寄存器信息。但大多数情况下都能充分回收gdb进行回溯所需的寄存器信息。

小贴士:使用gcore命令生成的进程核心转储中并没有提取引起核心转储的信号。因此使用gdb对gcore命令生成的核心转储进行分析时不会显示下列信息。


Program terminated with signal 6,Aborted.