我是靠谱客的博主 丰富黄蜂,最近开发中收集的这篇文章主要介绍c语言调试如何生成core文件,程序崩溃了,但是没有产生core文件,也没有捕获到信号...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

操作系统:Linux 2.6(suse 10,64位)

崩溃的程序是一个网络程序,一般运行几个小时后,就会崩溃, 但是没有产生core文件,也没有捕获到信号(没有输出捕获信号的日志)

在/etc/profile 里边设置了ulimit

下面是使用ulimit -a命令的打印的内容:

core file size          (blocks, -c) unlimited

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 28064

max locked memory       (kbytes, -l) 32

max memory size         (kbytes, -m) unlimited

open files                      (-n) 100001

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 8192

cpu time               (seconds, -t) unlimited

max user processes              (-u) 28064

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

在程序中模拟一个段错误,在程序的当前目录是会产生core文件的。

在信号捕获方面的代码是这样的:

static void sig_handler(const int sig)

{

log_error("SIGINT handled, core terminated, sig = %d", sig);

exit(0);

return;

}

void set_sig()

{

signal(SIGCHLD, SIG_DFL);

signal(SIGTSTP, SIG_IGN);

signal(SIGTTOU, SIG_IGN);

signal(SIGTTIN, SIG_IGN);

signal(SIGHUP, SIG_IGN);

signal(SIGTERM, SIG_DFL);

signal(SIGPIPE, SIG_IGN);

signal(SIGALRM, sig_handler);

signal(SIGINT, sig_handler);

signal(SIGIO, sig_handler);

signal(SIGPOLL, sig_handler);

signal(SIGPROF, sig_handler);

signal(SIGPWR, sig_handler);

signal(SIGSTKFLT, sig_handler);

signal(SIGUSR1, sig_handler);

signal(SIGUSR2, sig_handler);

signal(SIGVTALRM, sig_handler);

return;

}

最后

以上就是丰富黄蜂为你收集整理的c语言调试如何生成core文件,程序崩溃了,但是没有产生core文件,也没有捕获到信号...的全部内容,希望文章能够帮你解决c语言调试如何生成core文件,程序崩溃了,但是没有产生core文件,也没有捕获到信号...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部