I noticed something interesting today. When I run the executable directly it gives no hint where the segmentation fault happened. But if I run it from gdb it gives the line number where the seg fault happened. So I was wondering whether there is any similar utility which I can use which gives a complete traceout like jvm does.

First, you compile with debug gcc -g prog.c Second, set the coredump limit in the shell (if you're using BASH, otherwise, read your manual) ulimit -c unlimited Run the program, and get a crash.
What you also get is a corefile (perhaps called core)

You can then do gdb program core to find out what happened at the moment of death.