我正在使用Linux kexec机制在Linux上启用核心转储流。该流程以vmcore elf映像结束,该映像反映了崩溃时刻的全部内存情况。 输出vmcore elf映像的内核中的vmcore驱动程序具有vmcore_add_device_dump API,该API用于将一些额外的硬件内存部分推送到ELF中。 我正在按以下方式使用此API:
int hw_dump_collect(void *buf, u32 *buf_size)
{
unsigned int val = 0xFEFE; // fill buf with hw data
memcpy(buf, &val, sizeof(unsigned int));
return 0;
}
static int hw_dump_vmcoredd_collect(struct vmcoredd_data *data, void *buf)
{
u32 len = data->size;
return hw_dump_collect(buf, &len);
}
int hw_dump_vmcore_add_dump(struct device *dev)
{
struct vmcoredd_data *data = vmalloc(sizeof (struct vmcoredd_data));
u32 len;
len = dev->data_len;
data->size = len;
snprintf(data->dump_name, sizeof(data->dump_name), "%s",
dev->dev->name);
data->vmcoredd_callback = hw_dump_vmcoredd_collect;
return vmcore_add_device_dump(data);
}
但是,在生成vmcore文件之后,我想查看此数据,但是不知道该怎么做。 也许正确的方法是使用崩溃实用程序,但是如何?
请告知