Hello,
I'm trying to turn off application exception capturing (so I can send
exception traces via HTTP in bug reports):
1) In (the first loaded unit of) a console app, I did override
ExceptProc (see code at bottom) - my own handler is called (as expected)
on a EDivByZero exception.
2) In my Lazarus LCL app (SVN 23483M, LCL/Win32/i386, fpc 2.4.0), I did
the same like in the console app - additionally, I did set
Application.CaptureExceptions to 'false':
Application.Initialize;
Application.CreateForm(TForm1, Form1);
application.CaptureExceptions:=false;
Application.Run;
Now, when a EDivByZero is raised, my own handler is *not* called -
instead the default TApplication.HandleException is called - To my
surprise...
a) When raised before Application.Run, my own handler is called (as it
should).
b) When I debug Application.Run, it correctly uses the case without
exception handling(!) - that is, it correctly detects the
CaptureExceptions change.
c) When I read ExceptProc right before the exception, it correctly has
the value of my own handler(!)
Though, my own handler is never called within Application.Run - and I
have no idea why...
Any help or ideas are welcome!
Thanks,
Alexander
---------------Console output------------------------
install
application.CaptureExceptions=0
TApplication.HandleException Division by zero
Stack trace:
$00420413 CRASHME, line 39 of unit1.pas
$0042047A TFORM1__BUTTONCRASHMECLICK, line 46 of unit1.pas
$004C6234 TCONTROL__CLICK, line 2294 of ./include/control.inc
$004FA26F TBUTTONCONTROL__CLICK, line 72 of ./include/buttoncontrol.inc
$004FA745 TCUSTOMBUTTON__CLICK, line 164 of ./include/buttons.inc
$004FACA1 TBUTTON__CLICK, line 331 of ./include/buttons.inc
$004FA10A TBUTTONCONTROL__WMDEFAULTCLICKED, line 26 of
./include/buttoncontrol.inc
$0040A84A
$004BCE72 TWINCONTROL__WNDPROC, line 5102 of ./include/wincontrol.inc
$0050FCC7 DELIVERMESSAGE, line 111 of lclmessageglue.pas
$004DB6B0 WINDOWPROC, line 2621 of win32callback.inc
$77D18709
$77D187EB
$77D1B743
$77D1B7AB
$773C6FF6
$773C70D8
-----------My exception handler---------------------
procedure MyExceptionHandler(
Obj : TObject; // ExceptObject
Addr: Pointer; // ExceptAddr
FrameCount: Longint; // ExceptFrameCount
Frames: PPointer // ExceptFrames
);
begin
writeln('MyExceptionHandler');
ShowException(obj, addr);
end;
initialization
writeln('install');
exceptproc := @MyExceptionHandler;
--
Mit freundlichen Grüßen/Best regards
Alexander Grau
Grau GbR
Hardware & Software Solutions
Eschenweg 12
32609 Huellhorst
Germany
www.grauonline.de
Tel: +49 (0) 5741 2301259
Fax: +49 (0) 5741 235530
E-Mail: [email protected]
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus