Most modern debuggers don't need the special debugging information the compiler inserts into the object file; they can produce a stack trace without it, although they may not have access to symbolic names or line numbers. It is still quite possible to use the debugger to locate the point of failure, however.

As noted above, stick some print statements in your code and you can quickly find the failure point without such aids.

Failure in release mode with success in debug mode is often an indicator of walking off an array; the debugger "pads" array allocations in order to avoid segmentation faults, and that coupled with various indexing errors often produces programs that run fine with debug settings but fail otherwise. But there are litteraly hundreds, if not thousands of other likely causes. You'll need to narrow the problem down before you can analyze it.