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

Reply via email to