Re: access violation (win specific)
__PPS__ wrote:
Hello all, i have a problem with some code written by other that I
need to fix.
This is windows specific, but I post it here anyways (simply I always
visit complangc++).
Right. Maybe those C++ people will learn a thing or two about Windows,
after all! We're are honoured by your generousity. <bows>
I have a class that has a reference member. The problem I'm facing
happens frequently on WinCE mobile phone. And the problem is that at
some point the reference becomes invalid. This reference actually
points to a singleton object and I can find out it's memory address.
The problem is that at some point address of referenced object changes
[..]
Is there any other way I can find out how this reference becomes
corrupted
It sounds like a memory corruption defect in your program (unless it
is in the system on which you're running, which I doubt). The usual
way to find out when it happens is to put a special breakpoint in
your debugger, which should allow to watch for changes in the data
at an arbitrary location in memory. If it doesn't, you're in for
a long session of trying to find who is changing that memory by
stepping through your program and watching the value of the reference.
Put a breakpoint somewhere halfway between the start of the program
and the point at which you know it happens. When your debugger hits
that new breakpoint, see if it has happened. If it didn't, put the
second breakpoint in the middle (approx) of the second part of your
range. Continue. If it has actually happen, put another breakpoint
in the middle of the first half. Restart. This is how most of us
who use subpar debuggers find where sh!t happens in our programs.
Another way is to figure out the true address of the reference member
and put a whole lot of debug printouts in an attempt to narrow it
down, but that means changing your code which can suddenly stop
exhibiting the wrong behaviour.
Good luck!
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask