C 程序崩溃时如何捕捉错误?

C 程序崩溃时如何捕捉错误?,c,C,如何在程序崩溃时捕获错误 示例-Java在崩溃时将错误日志写入文件 我编写此代码是为了引起错误: int * invalidPointer = NULL; printf("%d\n", invalidPointer[0]); java崩溃并将错误日志(hs_error_pid(pid.log))保存到文件中,我想处理用C编写的程序中的错误(不是用java编写的,这只是一个示例) 第二个示例-Chrome when Crash显示信息,我们可以通过单击yes来重新启动浏览器。虽然这是未定义的行为

如何在程序崩溃时捕获错误

示例-Java在崩溃时将错误日志写入文件

我编写此代码是为了引起错误:

int * invalidPointer = NULL;
printf("%d\n", invalidPointer[0]);
java崩溃并将错误日志(hs_error_pid(pid.log))保存到文件中,我想处理用C编写的程序中的错误(不是用java编写的,这只是一个示例)

第二个示例-Chrome when Crash显示信息,我们可以通过单击yes来重新启动浏览器。

虽然这是未定义的行为,但如果您遇到分段错误,您可以使用它

#include <signal.h>
#include <stdio.h>

void Segfault_Handler(int signo)
{
    fprintf(stderr,"\n[!] Oops! Segmentation fault...\n");
}

int main() {
    signal(SIGSEGV,Segfault_Handler);
    return 0;
}
#包括
#包括
无效Segfault_处理程序(int signo)
{
fprintf(stderr,“\n[!]Oops!分段错误…\n”);
}
int main(){
信号(SIGSEGV、Segfault_处理器);
返回0;
}

我认为最好的解决方案是生成一个不会崩溃的代码。如果程序“崩溃”,这意味着它有一些未处理的错误。如果您通过将内容打印到日志并干净地退出程序来处理错误,那么这将是您正在寻找的功能。在C语言中,它不是可移植的。当你有一个UB时,任何事情都可能发生。它甚至可能起作用。它可能在今天起作用,然后只在偶数年内起作用。要“捕获”错误,您必须检查您调用的任何函数的错误代码(如果有)(也是在延迟任何指针之前)。Java只是在幕后进行,C则不是(速度,速度,速度)。您可以附加一个终止处理程序(但它是特定于系统的),但是…UB不一定终止您的程序。@jigz.-一位明智的教授告诉我,如果您的程序没有任何错误,那么就没有人在使用您的程序。目标始终是编写一个没有bug的程序,但这并不总是可能的,这取决于外部的影响。因此,应该始终编写代码来处理异常,以防止崩溃。