Under Unix style operating systems, when a program faults in some way (SIGSEGV,SIGABRT,etc...) and permissions allow (the PWD is writable, ulimit(1)'s permit), then the kernel will write out a copy of the program's address space, as well as the state of all the registers and any other state that's required to a file, usually called "core" or "core.programname".
To change the name of the core file on linux, look at /proc/sys/kernel/core_pattern
strings core | grep ^_=
will usually tell you what program caused the core file.
13:06 < alastair> I tried head core 13:06 < alastair> but gave up soon after that 13:07 < Isomer> you kinda want tail 13:07 < Isomer> since argv is near the top of the address space, not the bottom 13:07 < Isomer> but finding argv is just annoying without properly parsing the entire core file 13:08 < Isomer> so grepping the environment for the value of "_" (the current command) is the easiest approach
gdb program core
(gdb) bt full
this will usually display enough information that a programmer can figure out why the program crashed. When emailing a bug report to a programmer about a program that crashed, including a full backtrace (as per the previous command) will greatly improve the chances that the programmer will be able to find and fix the bug you encountered.