2008-12-07 14 views
11
İstisna

Delphi'de hangi yordamın istisna attığını nasıl öğrenebilirim?

Bu iyi çalışıyor işlenmeyen yakalamak için Delphi TApplication.OnException Olay kullanıyorum ama prosedür yapılan öğrenebilirim nasıl istisna yani 'dönülemez hata'

burada oldu hakkında yeterli bilgi vermez

hata oldu?

procedure TFrmMain.FormCreate(Sender: TObject); 
begin 
    Application.OnException := MyExceptionHandler; 
end; 

procedure TFrmMain.MyExceptionHandler(Sender : TObject; E : Exception); 
begin 
    LogException (E.Message);  
    Application.ShowException(E); 
end; 

cevap

23

yapabilirsiniz istisna kullanılarak atıldı bellek adresini almak ExceptAddr değişkeni (Sistem birimi). Ancak bir yığın izi istiyorsanız, 3.Party MadExcept, EurekaLog veya açık kaynak JCLDebug (JCL'nin bir parçası) araçlarından birini kullanabilirsiniz.

+0

Merhaba Andy - Hoş Geldiniz ...! – Roddy

+0

Teşekkürler - Eurekalog'um var - iyi çalışıyor –

8

en basit ve hızlı yolu JCL istisna ve hata ayıklama desteğini kullanmak olacaktır. JCL'yi yükledikten sonra, hata ayıklama sembollerini ikiliye eklediğinizden emin olun (Projeler -> JCL hata ayıklama uzmanı -> Bu ikili için JDBG verilerini ekle -> Etkin) ve projeye bir JCL özel durum iletişim kutusu ekleyin (Dosya -> Yeni .. -> Diyaloglar -> İstisna iletişim kutusu.

JCL yükleyici bu iletişim kutusunu nesne deposuna ekleyemezse ve görünmüyorsa (bana birkaç kez oldu), ya da .pas ve .dpr dosyasını jcl-install-dir\experts\debug\dialog öğesinden projenize kopyalayarak el ile ekleyin. ve elle ekleyerek veya yakın Delphi, bir metin editörü %DELHPIDIR%\bin\delphi32.dro düzenlemek ve tabii :) yollarını ayarlanması (buna böyle bir şey eklemek

 
[P:\DELPHI11\EXTERNALLIB\JCL\EXPERTS\DEBUG\DIALOG\EXCEPTDLG] 
Type=FormTemplate 
Name=Exception Dialog 
Page=Dialogs 
Icon=P:\DELPHI11\EXTERNALLIB\JCL\EXPERTS\DEBUG\DIALOG\EXCEPTDLG.ICO 
Description=JCL Application exception dialog 
Author=Project JEDI 
DefaultMainForm=0 
DefaultNewForm=0 
Ancestor= 

[P:\DELPHI11\EXTERNALLIB\JCL\EXPERTS\DEBUG\DIALOG\EXCEPTDLGMAIL] 
Type=FormTemplate 
Name=Exception Dialog with Send 
Page=Dialogs 
Icon=P:\DELPHI11\EXTERNALLIB\JCL\EXPERTS\DEBUG\DIALOG\EXCEPTDLGMAIL.ICO 
Description=JCL Application exception dialog 
Author=Project JEDI 
DefaultMainForm=0 
DefaultNewForm=0 
Ancestor= 
İlgili konular