The size of the core dump file is governed by "ulimit" in bash. To get more information about ulimit, do a info on bash and search for ulimit
$info bash
To get the status of the current limits set you can do
ulimit -a
Notice the core file size (-c). If it reads 0, it means that bash would not create the core dump file. You need to change the size.
ulimit -c 1024
You can even set it to unlimited
ulimit -c unlimited
Generating the core
/* coredump.c */
#include <stdio.h>
int main (void)
{
int *point = NULL;
*point = 0;
return 0;
}
Compile the code
gcc -g coredump.c -o coredump
When you try to run, it would generate a segmentation fault
./coredump
Segmentation fault (core dumped)
Using the core
To use the core, start gdb and pass the core dump generated
gdb coredump -c core
GNU gdb 6.6-debian
Copyright (C) 2006 Free Software Foundation, Inc.
Reading symbols...
Core was generated by ./coredump
Program terminated with signal 11, Segmentation fault.
#0 0x08048381 in main () at coredump.c:6
(gdb)
You can now use the gdb commands to view the call stack, registers, memory etc.