我目前正在开发"Creation of Postmortem data logger in Linux on Intel architecture"。它只不过是核心实用程序的创建。有没有人可以分享关于在Linux内核中内部实现的应用程序崩溃时,产生core dump的各种信号(SIGSEGV,SIGABRT,SIGFPE etc)的信号处理器的细节。它使我的内核产生核心文件(在应用程序崩溃时),满足用户特定的需求,比如显示registers,stackdump and backtrac
当我尝试使用信号处理程序将全局数据转储到文本文件并生成核心文件时,我注意到一个奇怪的问题。我希望转储到文件中的数据与核心文件中的数据相同(它是相同的全局数据)。extern char buffer[100][80] ; // Hundred records each of length 80 characterschar buffer[100][80];
snprintf(buffer[i],80,"%s:%d recorded idx = %d\n",__FUNCTION__,__LINE__,i);
尝试创建一个没有所有内存数据转储的小型核心转储文件。这个似乎有一个很好的解决方案。但是,当我将掩码设置为0(以排除所有内存数据)时,就没有核心文件。如果我将掩码设置为0x33,则生成核心文件。知道为什么吗?#include <execinfo.h>#include <stdlib.h>
int *foo = (int*)-1; // make a bad pointer
prin