On 26/04/2012 14:34, Antonio Fortuny wrote:
Le 26/04/2012 14:30, Martin a écrit :
Can you attach the source of the procedure in question (or at least
some lines of it) AND the assembler (from asm debug win) for the line
in question and at least the 2 surrounding lines?
... blablabla ...
procedure TForm1.*BtnOutLoadClick*(Sender: TObject);
var
wDBDef: TDataBaseDef;
begin
// simulate main thread execution to load the criteria
wDBDef := TDataBaseDef.Create(1); <-------------------------- IDE
break point
try
wDBDef.Separator := ';;';
wDBDef.Definition := EOutDbDefinition.Lines.Text;
Data.LoadDatabaseOutputCriteria(wDBDef);
Data.FilesDir := 'D:\Synchro\Logs';
Data.FilesDir2 := EmptyStr;
Data.FDBThreadPriority := tpNormal;
Data.FDBThreadLoopDelay := 1000;
Hm, there is a possibility, it is because of threads. (The code looks,
like the database may be creating a thread.)
I haven't done any tests on that yet, so I can only guess. And thread
debug support in the IDE is very minimal.
It is possible the db thread is in a library. And when gdb should single
step, it looks at all threads, and tries a breakpoint in the dll (and
that will fail...)
Open the thread window. You should see threads.
Check which thread is active, before hitting F8.
So I do not know, if that will help...
GDB supports controlling individual threads. But it hasn't been added to
the IDE yet. So if the right thread is selected, and if it is due to
threads (you might see the location of each thread, maybe the address
from the error can be identified) then there is little else.
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus