2008-12-16 11 views
8

हैंडलिंग यदि कुछ मौजूद (जावा दुनिया में) मैं सोच रहा था निम्न सुविधाओं के साथ JVM वर्तमान स्थिति का एक स्नैपशॉट लेने के लिए सक्षम:स्वचालित अपवाद

  • कर, जबकि एक अपवाद फेंका जा रहा है।
  • स्थानीय चर, विधि के तर्क, आदि को कैप्चर करें
  • इसे एक आसान फ़ाइल में रखें जिसका उपयोग आपके स्रोत कोड की स्थिति आईडीई में निकालने या पुन: उत्पन्न करने के लिए किया जा सकता है।

दो पहली विशेषताएं आवश्यक हैं (तीसरा शानदार होगा)। और यह उत्पादन के उपयोग के लिए उपयुक्त होना चाहिए (इसलिए, डिबगर्स के बारे में कोई रास्ता नहीं है)।

मैं WWW के माध्यम से खोज की है यह पूछ से पहले (जब तक संभव हो) और मैंने पाया कुछ संकेत:

  • Cajoon Interceptor: जैसा कि Dzone post में कहा, यह एक निष्क्रिय JVM एजेंट जो तीन आवश्यकताओं को पूरा है! लेकिन, इसमें दो डाउनसाइड्स हैं: आपको इसके लिए भुगतान करना होगा और साइट डाउन हो सकती है (शायद कुछ भी भुगतान करने का कोई मौका नहीं है)।
  • AviCode Intercept Studio: कैजून का .NET समतुल्य। बस कुछ अंतर्दृष्टि देने के लिए।
  • JavaFrame: ठीक है, यह एक ट्वीट है, लेकिन यह एक उपलब्ध एसवीएन रेपो को इंगित करता है जिसमें एक जेवीएम एजेंट का स्रोत कोड (एमआईटी लाइसेंस के तहत) है जो ठीक दिखता है (मैं इसे आज़मा रहा हूं)।

तो, शायद मैं एक मौजूदा समाधान की तलाश में हूं? यह जरूरी नहीं है, लेकिन मेरे पास एक परियोजना के लिए यह विचार था और यह "अज्ञात" (?) पथ का पता लगाने और कुछ वास्तविक पाने के लिए बहुत अच्छा होगा।

ऐसा लगता है कि यह एक JVM एजेंट (JVMTI से अपवाद ईवेंट, example के लिए) होगा।

अंत में, मैं Wikipedia's Exception Handling article से followin पैराग्राफ पर प्रकाश डाला जाएगा:

क्रम इंजन वातावरण जैसे जावा या NET में, वहाँ उपकरण है कि क्रम इंजन में संलग्न है और हर बार है कि एक मौजूद ब्याज का अपवाद होता है, वे मेमोरी में मौजूद पर स्मृति में मौजूद (कॉल स्टैक और ढेर मान) को डिबगिंग रिकॉर्ड करते हैं। ये उपकरण स्वचालित अपवाद हैंडलिंग या त्रुटि इंटरसेप्शन उपकरण कहा जाता है और अपवादों के लिए 'रूट-कारण' जानकारी प्रदान करते हैं।

यही विचार है। मुझे आशा है कि कोई मुझे कुछ अंतर्दृष्टि दे सकता है या शायद भविष्य में, कोई इस विनम्र पद से प्रेरित हो जाता है :)

धन्यवाद!

+0

मैं अगर आप अन्य समाधान पाया है पता करने के लिए उत्सुक हूँ। – dsatish

उत्तर

2

मैं JavaFrame पर एक नज़र डालता हूं और यह एक अच्छा प्रारंभिक बिंदु लगता है।

LD_LIBRARY_PATH=../build/native/ java -agentlib:frameintrospect -classpath ../build/classes/:. org.thobe.frame.Test 

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

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

सभी को धन्यवाद!

पीडी .: सिर्फ संदर्भ के लिए, कुछ लिंक मैं ने शोध करते समय पाया:

0

सुनिश्चित नहीं हैं कि अगर यह एक उत्पादन वातावरण में व्यवहार्य है, लेकिन सर्वज्ञ डिबगर है:

क्या होगा यदि आपके डिबगर जा सकते हैं "समय में पीछे की ओर जाना?" क्या यह डिबगिंग को आसान बना देगा? सभी परिवर्तनीय असाइनमेंट को रिकॉर्ड करके, यह अनिवार्य रूप से करना संभव है।यह सर्वज्ञानी डिबगिंग के लिए अंतर्निहित विचार है। आश्चर्यजनक बात यह है कि इस फैशन में एंट, जुनीट, डीबगर स्वयं ही काफी बड़े कार्यक्रमों को डीबग किया जा सकता है। http://wiki.netbeans.org/UsageLoggingSpecification:

http://www.lambdacs.com/debugger/

+0

मुझे यह भी मिला, लेकिन मुझे नहीं लगता कि यह उत्पादन वातावरण के लिए उपयुक्त समाधान हो सकता है, क्योंकि ऐसा लगता है कि यह आपके कार्यक्रम के माध्यम से निष्पादित करने की आवश्यकता है। एक जेबॉस एएस के साथ कल्पना कीजिए ... वैसे भी धन्यवाद;) – Dario

1

आप काम है कि NetBeans स्वचालित उपयोग प्रवेश के बारे में क्या किया है इस पर गौर कर सकते हैं।

स्थानीय चरों को डंप करने के लिए, मुझे लगता है कि आप बस एक डीबगर का उपयोग कर सकते हैं, जैसे कि बाजाफ्रेश 4 लाइफ का उल्लेख किया गया है।

+0

धन्यवाद, अपवाद को संभालने के दौरान डीबगर को कॉल करने का कोई तरीका है? लक्ष्य को जेएमवी राज्य ऑन-द-फ्लाई की एक छवि मिलती है, बस इस समय अपवाद उठता है। इस तरह, आप यह देखने में सक्षम होंगे कि स्थानीय चर के मूल्य, स्थिर वर्ग और विधि के तर्क भी हैं। – Dario

1

शायद यह AspectJ के साथ किया जा सकता है?

+0

हो सकता है लेकिन कोई स्थानीय चर उपलब्ध न हो, मुझे लगता है, क्योंकि पहलुओं का अपना दायरा या संदर्भ है (शायद मैं गलत हूं)। – Dario

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