#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
void handle_sigsegv(int sig) {
printf("Caught signal %d\n", sig);
// 这里可以添加更多的处理逻辑,比如记录日志等
}
int main() {
// 设置信号处理器,捕获SIGSEGV信号(段错误)
signal(SIGSEGV, handle_sigsegv);
// 故意制造一个段错误
int *ptr = NULL;
*ptr = 10; // 这将导致程序崩溃并生成coredump
return 0;
}
signal(SIGSEGV, handle_sigsegv); 来设置一个信号处理器,当程序遇到段错误(SIGSEGV)时会调用 handle_sigsegv 函数。ptr 设为 NULL 并尝试解引用它,程序会触发段错误。这通常会导致程序崩溃,并在启用了 coredump 的系统上生成 core 文件。ulimit -c unlimited
这将允许生成无限大小的 core 文件。
如果你只是想查看如何生成 coredump 而不处理信号,可以省略信号处理器部分,直接运行程序即可。
上一篇:linux改ip
下一篇:linux route add
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站