我正在尝试让我的应用程序在出现一些错误(分段错误)时进行保存。
我已经有了适用于Windows的代码,但我无法在Linux上运行它。
Windows版本:
EXCEPTION_DISPOSITION __cdecl _SEHHandler(struct _EXCEPTION_RECORD *ExceptionRecord, void* EstablisherFrame, struct _CONTEXT *ContextRecord, void* DispatcherContext)
{
save();
}
EXCEPTION_DISPOSITION __cdecl _SEHHandler(struct _EXCEPTION_RECORD *ExceptionRecord, void* EstablisherFrame, struct _CONTEXT *ContextRecord, void* DispatcherContext)
{
save();
}
答案 0 :(得分:0)
尝试保存有关分段违规的数据并不总是一个好主意,因为您保存的数据可能已损坏或保存可能会再次触发分段违规。但是你需要发出信号并采取行动。
#include <stdio.h>
#include <signal.h>
void crashHandler( int sig ) {
// do save
}
// install handlers
signal(SIGBUS, crashHandler);
signal(SIGSEGV, crashHandler);