我有一个应用程序在访问共享内存时崩溃。
typedef struct
{
...
} LinuxUserData;
LinuxUserData *ptrLinuxUserData;
fd = shm_open(shrSegName, O_CREAT|O_RDWR|O_EXCL, 0644);
ptrLinuxUserData = mmap(0, sizeof(LinuxUserData), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
但是核心内存是无法访问的,它给了我错误
(gdb) p *ptrLinuxUserData
Cannot access memory at address 0xeb80d050
这可能是因为核心没有收集共享内存细节。 此核心手册页提及"内存映射的I / O页面(如帧缓冲区)永远不会被转储,虚拟DSO页面总是被转储,无论coredump_filter值如何。"
是否可以通过哪种方式在核心中收集共享内存或其详细信息并进行访问? 要么 调试和根本原因应用程序在共享内存中核心的适当方法是什么?