2009-08-20 17 views
31

यहाँ स्टैकट्रेस है:स्टैक ट्रेस लाइन नंबर से वास्तविक जेएसपी लाइन नंबर प्राप्त करना?

  1. स्टैकट्रेस से लाइन नंबर प्राप्त करें, इस मामले 128.
  2. showcustomer_jsp.java फ़ाइल (और यह नहीं में:

    ... 
    org.apache.jsp.showcustomer_jsp._jspService(showcustomer_jsp.java:128) 
    org.apache.jasper.runtime.HttpJspBase.service(Unknown Source) 
    

    यह मैं क्या कर रहा है /var/run/tomcat-6/Catalina/localhost/_/org/apache/jsp में देखने के लिए बिल्कुल स्पष्ट नहीं है)।

  3. यह खुला है और अब 128
  4. लाइन के पास जाओ, खोज जो भी आप _jsp.java फ़ाइल में लाइन 128 पर पाया के लिए .jsp फ़ाइल।
  5. बूम! हो गया!

कृपया, ऐसा करने का एक आसान तरीका है?

+0

यह भी नहीं पता था कि आप ऐसा कर सकते हैं। +1 – iandisme

उत्तर

2

मुझे नहीं लगता कि आप कर सकते हैं। जेएसपी फ़ाइल को सर्वलेट में संकलित किया गया है, और सीधे चलाया नहीं जाता है। चूंकि इस सर्वलेट से अपवाद फेंक दिया गया है, तो आपके पास स्टैक ट्रेस में मौजूद लाइन कक्षा से एक है। इस बिंदु पर जेएसपी में मूल रेखा खो गई है।

आमतौर पर यह सबसे अच्छा है (आदि हैं, foreach,) कोड लिखने या एक jsp से अपवाद फेंकने से बचने के लिए, और सर्वलेट और JSP टैग में अपने तर्क को संपुटित, और नियंत्रण प्रवाह के लिए JSTL का उपयोग

+2

वेबलॉगिक में प्री-डब्लूएल 10 संस्करणों में वास्तव में एक अच्छी सुविधा थी: यह उत्पन्न जेएसपी लाइन नंबर दिखाते हुए जेनरेट की गई जावा फ़ाइल में एक टिप्पणी लिखेगी। यहां तक ​​कि यदि आपका तर्क टैगलिब में encapsulated है, तो यह देखना अच्छा लगता है कि किस आमंत्रण ने फेंक दिया। – kdgregory

+0

और जैस्पर स्रोतों पर एक त्वरित रूप से संकेत मिलता है कि यह जेएसपी फ़ाइलों को लाइन संख्याओं के ज्ञान के बिना टोकन स्ट्रीम के रूप में संसाधित करता है। तो उत्तर नहीं है। – kdgregory

+0

आईडीई में मूल पंक्ति संख्या की गणना करने के लिए सभी डेटा हैं। शायद कोई इंटेलिजे प्लगइन लिख सकता है जो नौकरी करता है। –

4

मैं पाया है Eclipse WTP FAQ पर यह page जो बताता है कि ग्रहण को कॉन्फ़िगर कैसे करें ताकि आप जेनरेट किए गए जावा कोड पर स्टैकट्रैस पर क्लिक कर सकें।

+0

+1, लेकिन फिर भी - यह आपको केवल जेएसपी जेनरेट किए गए जावा कोड पर लाएगा। – Juraj

0

मैं लेक्स और वाईएसी में प्रोग्राम करता था जो सी कोड उत्पन्न करेगा, और आप डिबगिंग के लिए #line प्री-प्रोसेसर निर्देश सक्षम कर सकते हैं। जब उत्पन्न सी कोड में कुछ हुआ, तो आईडीई संबंधित लेक्स या yacc फ़ाइल खोलने के लिए पर्याप्त स्मार्ट था, न कि जेनरेट सी कोड। सरी

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