When a linux program crashes, a core file could be generated under the directory where you ran the file. A core file contains very useful information to help you debug the program. If there is no such a file named core.XXXX, it may be that the parameter of the maximum size of core files is set as 0. Check it with this command:
$ ulimit -c
If the result is 0, set a size for it, e.g.
$ ulimit -c 100000
If the core file is generated, you can run gdb to exam the core file and see why and where the crash happened.
$ gdb /path/to/your/program core.XXXX
If your source code is somewhere else, include the location of the source code in the gdb command line.
$ gdb -d /path/to/source-code /path/to/program core.XXXX
It brings you to the crash location in your source code. If you want to see a back trace, run the gdb command bt.