This must be a Delphi bug...
I have a unit which is the basis of my persistance framework. In that unit I have a base class for all my domain objects, a list class and a generic list class.
Just recently I noticed that when I step into the unit when debugging, execution will jump to a point a little further down in the file than it should... Maybe four or five lines. Re-ordering the file makes no difference. The code would also generate access violations, but only when I debugged it.
I cast about trying to find the reason for this... Several things came to mind, like some code injection screwing with the debugger (eg this logitec webcam driver bug), or the debug info being out of sync with my unit source (eg the dcu was being pulled from some old source).
In the end I fired up a VM with a clean Windows + Delphi install, grabbed only what I needed to test the unit, and I created a small DUnit project to test it. Same problem.
Then I started removing things from the unit one at a time till it worked. The only thing that made any difference was when I removed the generic list class.
Has anyone else seen this problem? Does anyone know how to get around it?
Thanks in advance,
N@
Update: Adding the generic back into the unit makes the problem come back, so it's not a problem of stale DCUs.