概述
操作系统: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文件,也没有捕获到信号...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复