First of all: Make sure you compile with the correct settings:
http://wiki.lazarus.freepascal.org/Debugger_Setup#Project_Options2nd, If you use F7 (step into your own code's subprocedure) and the line looks like
This will unfortunately go through edit1.text().
You can change the options of the LCL package, and recompile it without debug info.
But that will not help in all cases.
3rd: If you get an Exception
The reason for the exception may well be in your code:
Page1.free;
Page1.doSomething();
2nd line will crash. But the crash will (very likely) happen deep down in doSomething, or methods called by that.
If that is the LCL, with debug info, the debugger stops there, if not you most likely get the assembler.
You can look at the stacktrace, and see the code that called it
----------------------
In your case it seems to stop in WindProc.
That is possible yet something else, and even harder to find. You may have done something wrong one place, but the error happens much later in un-related code. So the stack may not help either.
It is possible that you called someComponent.Free inside an event (an event of that component, or one of its children.
procedure MyInfoForm.Button2Click(SEnder:TObjet);
begin
MyInfoForm.Free;
end;
That destroys the button too. But you are in an event of the button.
After the "end" above, the program will be in code that belongs to the button, but the button is no longer, and then it will crash.
You can hide the form, but you must defer destroying it.
MyInfoForm.Hide;
Application.ReleaseComponent(MyInfoForm);)