2008-12-07 19 views
11

मैं डेल्फी TApplication.OnException घटना का उपयोग कर रहा बिना क्रिया अपवादमैं कैसे पता लगा सकता हूं कि किस प्रक्रिया ने डेल्फी में अपवाद फेंका?

यह अच्छी तरह से काम करता है को पकड़ने के लिए, लेकिन के बारे में जहां अपवाद यानी 'महासंकट विफलता'

हुआ पर्याप्त जानकारी मैं यह कैसे पता कर सकते हैं जो प्रक्रिया बना नहीं देता त्रुटि हुई?

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; 

उत्तर

23

आप कर सकते हैं स्मृति पता जहां अपवाद का उपयोग करके फेंक दिया गया था प्राप्त ExceptAddr चर (सिस्टम इकाई)। लेकिन यदि आप एक स्टैक ट्रेस चाहते हैं तो आप तीसरे पक्ष के उपकरण मैडएक्ससेप्ट, यूरेकालॉग या ओपन सोर्स जेसीएलडीबग (जेसीएल का हिस्सा) का उपयोग कर सकते हैं।

+0

हाय एंडी - आपका स्वागत है ...! – Roddy

+0

धन्यवाद - मुझे अभी यूरेकलॉग मिला है - यह अच्छी तरह से काम करता है –

8

सरल और तेज तरीका JCL अपवाद और डिबगिंग समर्थन उपयोग करने के लिए किया जाएगा। जेसीएल स्थापित करने के बाद, बाइनरी (प्रोजेक्ट्स -> जेसीएल डीबग विशेषज्ञ -> इस बाइनरी के लिए जेडीबीजी डेटा डालें -> सक्षम) में डीबग प्रतीकों को सम्मिलित करना सुनिश्चित करें और परियोजना में एक जेसीएल अपवाद संवाद जोड़ें (फ़ाइल -> नया .. -> संवाद -> अपवाद संवाद)।

JCL संस्थापक वस्तु भंडार है कि संवाद जोड़ने के लिए विफल रहता है और यह (कई बार मुझे क्या हुआ) प्रकट नहीं होता है, या तो jcl-install-dir\experts\debug\dialog से .pas और .dpr फ़ाइल को कॉपी करके इसे मैन्युअल रूप से जोड़ने के अपने प्रोजेक्ट में हैं और उन्हें मैन्युअल रूप से जोड़ने, या पास डेल्फी, किसी पाठ संपादक में %DELHPIDIR%\bin\delphi32.dro को संपादित करने और पाठ्यक्रम :) के रास्तों को एडजस्ट करने के लिए यह कुछ इस तरह जोड़ने (

 
[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= 
संबंधित मुद्दे

 संबंधित मुद्दे