2011-09-13 16 views
5

मैं "डीबग" मोड के तहत रन टाइम में अलग-अलग व्यवहार कैसे कर सकता हूं (उदाहरण के लिए ग्रहण में "जावा अनुप्रयोग के रूप में डीबग" के रूप में उभारा) (उदाहरण के लिए "जावा एप्लिकेशन के रूप में चलाएं" ग्रहण ")? उदाहरण के लिए, कोड" हाहा, आप डीबग में हैं "प्रिंट कर सकते हैं जब" जावा एप्लिकेशन के रूप में डीबग करें "लेकिन" जावा एप्लिकेशन के रूप में चलाएं "के दौरान कुछ भी प्रिंट न करें (मैं किसी भी तर्क को जोड़ना नहीं चाहता मुख्य विधि का आह्वान करना)। क्या यह लागू करने के लिए कोई सामान्य तरीका है जो ग्रहण, इंटेलिजे आदि जैसे किसी भी आईडीई के तहत काम कर सकता है?आईडीई में "डीबग" मोड में मेरा कोड कैसे चल रहा है?

+0

इस विषय पर इस विषय पर चर्चा की गई है: http://stackoverflow.com/questions/1109019/determine-if-a-java-application-is-in-debug-mode-in-eclipse –

उत्तर

7

मैंने इसे निम्नलिखित के रूप में कार्यान्वित किया है। मैं जेवीएम पैरामीटर की जांच करता हूं और -Xdebug पर एक की तलाश करता हूं। कृपया कोड देखें।

private final static Pattern debugPattern = Pattern.compile("-Xdebug|jdwp"); 
public static boolean isDebugging() { 
    for (String arg : ManagementFactory.getRuntimeMXBean().getInputArguments()) { 
     if (debugPattern.matcher(arg).find()) { 
      return true; 
     } 
    } 
    return false; 
} 

यह मेरे लिए काम करता है क्योंकि ग्रहण अनुप्रयोग को निष्पादित करता है जिसे अलग प्रक्रिया के रूप में डीबग किया जा रहा है और जेडीआई (जावा डिबगिंग इंटरफेस) का उपयोग करके इसे जोड़ता है।

मैं जानना चाहता

+0

+1: 'debubg '?? ;) आप स्थैतिक पैटर्न बनाने के बजाय DEBUG के लिए स्थिर फ़ील्ड सेट कर सकते हैं क्योंकि मैं इसे बदलने की अपेक्षा नहीं करता। –

+0

धन्यवाद, @ पीटर लॉरी। ऐसा लगता है कि यह मेरे लिए काम करता है क्योंकि मैंने jdwp जोड़ा। मैं इसे अपने कोड में ठीक कर दूंगा। – AlexR

0

इन मोड के बीच अंतर यह है कि डिबग मोड में अपने आईडीई सिर्फ एक डीबगर के साथ आवेदन निष्पादित से कनेक्ट करेगा (आमतौर पर है कि क्या यह अन्य IDEs (जैसे इंटेलीजे) के साथ काम करता खुशी होगी बाइनरी सॉकेट के माध्यम से)। एक डीबगर संलग्न होने से आईडीई को ब्रेकपॉइंट्स हिट, अपवाद फेंकने आदि की खोज करने की अनुमति मिलती है। यह सामान्य मोड में नहीं होगा।

जावा कोड से डीबग और सामान्य मोड के बीच अंतर करने के लिए कोई मानक और आसान उपयोग करने का तरीका नहीं है।

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