查看是否允许的core dump文件大小。如果只是临时需要用到可以使用命令ulimit -c unlimited临时打开则发生段错误时会在当前目录下产生core文件。
若是需要配置一直生效并指定core文件生成路径和一些其他的信息可以用如下命令
在etc/sysctl.conf目录中添加
kernel.core_pattern=/var/coredump/%t-%e-%p-%c.core
kernel.core_uses_pid=0
#sysctl -p
1、栈溢出
在ubuntu上默认的栈空间大小为8192kb应用程序的栈超过这个值就会发生段错误可以通过命令ulimit -s来查看设置的栈的大小。ubuntu14.04 32位 执行如下程序#include
#include
#include
void call_fault(void)
{
char array[9 * 1024 * 1024];
memset(array, 0, sizeof(array));
}
void call_test(void)
{
int a;
a = 1;
call_fault();
}
int main()
{
call_test();
return 0;
}
root@zhuzhu:test_work#gcc -g -Wall stack_out.c
root@zhuzhu:test_work# ./a.out
Segmentation fault (core dumped)
执行过后会在当前目录下生成core文件
root@zhuzhu:test_work# gdb ./a.out core ----->调试开始
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Typ