Mail Archives: djgpp/2002/06/02/01:55:34
On 31 May 2002, S.Turner wrote:
> Rhide says: "Program has received signal: SIGSEGV, Segmentation fault"
>
> So, I reverted back to a know working back up of the source code and have come
> to find
> out that if I step through the program one line at a time (using RHIDE) that--
> well,
> according to RHIDE, the program executes lines of code out of order.
This is normal: the compiler optimizes your code, and as part of this
optimization moves code around. It's a bit confusing at first, but it's
not too hard to get used to.
If you want to avoid this reordering, compile without optimizations. But
please be aware that doing so produces code that is very different from
optimized code, so you are in fact debugging a different program. In
particular, the bug which causes the crash might not even happen if you
compile without optimizations.
So on balance, I'd suggest to leave optimizations enabled and get used to
the execution jumps.
> The actual crash appears to be coming from a mishandled character array but I
> cannot see
> how this is happening with this erratic debugging.
You should concentrate on the line that is shown as current when the
array is mishandled. If you cannot figure that out, post here the
relevant code fragment and what you see in RHIDE as far as the values of
related variables are concerned, and someone will help you.
> The final oddity is that the .EXE file itself when run at the DOS prompt will
> run to
> completion without any problems.
This is a sign of using uninitialized memory. When you run a program
under RHIDE, it uses a different memory region, and thus a different
random garbage.
- Raw text -