发生崩溃时,我有一个崩溃后处理程序,在这里我尝试将某些内存区域中的内容转储出去
auto memdump = std::fstream("FileMemDump.bin", std::ios::out | std::ios::binary);
auto memRegion = getMemoryRegion();
std::cout << "Memory region start: " << memRegion.start << " size: " << memRegion.size;
memdump.write((char*)memRegion.start, memRegion.size);
memdump.close();
,并且在文件创建核心文件之后 因此,我以以下方式加载内核后:
#gdb ./exec ./core.file
我给出了恢复命令;起始地址是从上面的日志中打印出来的...,但失败并显示以下消息
(gdb) restore ./FileMemDump.bin binary 0 0xFFAA0000
You can't do that without a process to debug.
a。是将选项赋予std::fstream
确定还是
b。是否可以在代码中使用{来调用gdb-dump
命令(因为可以恢复gdb的转储)
或者我试图做的事不可行
编辑:
mmap()
分配给/dev
设备,类似地,我{{1} }以及非易失性dimm区域(我们不使用常规的malloc)有了这个;当过程断言/产生核心时,我将无法访问大页面或非易失性暗淡区域
mmap()的参数
mmap()