In order to make use of segmentation faults, a program must be compiled with debugging. Every part must be compiled with the "-g" flag passed to gcc and it must not have had the "strip" command run on it. This makes the program much larger, but when you're debugging, it lets you see exactly where the program crashed and what the values of variables were at the time. If it's a pre-compiled binary, you are sort of out of luck. Segmentation faults can either be a program bug, or occasionally, bad memory can cause them as well as other odd behavior.