2011-01-07 25 views
5

डेल्फी 2007 एप्लिकेशन में, हमने पागल एक्सेप्ट का उपयोग हमारे लिए निष्पादन को संभालने के लिए किया है। हम मानक संवाद का उपयोग करते हैं, जिससे उपयोगकर्ता हमें मेल के साथ एक रिपोर्ट भेज सकता है यदि वह चाहता है।madExcept, वर्तमान स्टैक के शीर्ष पर पहुंच

हम इस कार्यक्षमता में थोड़ा जोड़ना चाहते हैं। यदि उपयोगकर्ता एक पूर्ण रिपोर्ट नहीं भेजना चुनता है, तो हम अभी भी एक फ़ाइल में अपवाद लॉग करना चाहते हैं, लेकिन पूर्ण रिपोर्ट नहीं। हम अपवाद वर्ग और संदेश, और स्रोत फ़ाइल और लाइन नंबर चाहते हैं।

पहला दो आसान है, लेकिन मुझे बाद वाले को खोजने का सीधा आगे नहीं मिल रहा है।

मेरे पास IMEException इंटरफ़ेस के रूप में पूर्ण अपवाद रिपोर्ट है। जहां तक ​​मैं देख सकता हूं, कॉल स्टैक केवल BugReportSections संपत्ति के माध्यम से उपलब्ध है, जो मुझे सादा पाठ में ढेर देता है।

madStackTrace.pas में, StackTrace() -फंक्शन है जो मुझे जो चाहिए वह मुझे देना चाहिए। यह मानकों का एक बहुत लेता है, और प्रलेखन सूचना के आधार पर एक छोटे से छोटा है ..

प्रश्न: किसी को भी, StackTrace() में फ़ीड करने के लिए सही मानकों पता है इतना है कि यह केवल से ढेर के शीर्ष आइटम वापस धागा जहां अपवाद फेंक दिया गया था?

उत्तर

5

madStackTrace.pas में एक और फ़ंक्शन, StackAddrToStr है जो केवल एक ही पता लेता है और इसके लिए स्वरूपित पाठ देता है। यदि आप क्रैशिंग थ्रेड के लिए except ब्लॉक में हैं तो आप इसे वैश्विक ExceptAddr वैरिएबल पास कर सकते हैं। यदि आप madExcept कॉलबैक में से एक में हैं, तो इसके बजाय `IMEException.ExceptAddr 'का उपयोग करें।

+0

अभी भी एक स्ट्रिंग लौट रहा है, लेकिन यह मुझे madMapFileInfos() से madMapFileInfos() तक ले जाता है, जो मुझे वह दे सकता है जो मुझे चाहिए। – Vegar

+0

मुझे लगता है कि मुझे स्टैकट्रेस के लिए जो चाहिए वह मिल सकता है, हालांकि: 'स्टैकट्रेस (सत्य, झूठा, झूठा, @ स्टैक, अपवाद। एक्सेप्ट एड, सत्य, झूठा); ' – Vegar

+0

@ वेगर अगर यह काम कर रहा है, तो यह उत्तर स्वीकार किया जाना चाहिए – mjn

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