2011-04-21 11 views
19

वास्तव में क्या -g:vars (स्थानीय चर डिबगिंग जानकारी) javac का विकल्प आउटपुट के रूप में प्रदान करता है। स्रोत, लाइनों और जी: स्रोत, लाइनों है कुछ एक है एक इन स्थानीय चर डिबगिंग का एक उदाहरण, वार्सjavac डिबगिंग जानकारी विकल्प जी क्या करता है: कर वार्स?

कुछ परीक्षण कर रहा है, वहाँ कोई अतिरिक्त जानकारी (उदाहरण के जी के बीच कोई अंतर नहीं है। जानकारी

+0

क्यों आप जानना चाहते हैं? यह संभव है कि अन्य विकल्प सेट किए जाने पर वर्र्स हमेशा शामिल होते हैं। किसी विकल्प के मुकाबले '-g: vars' आज़माएं। –

उत्तर

14

javadocs से:

जी स्थानीय चर सहित सभी डिबगिंग जानकारी उत्पन्न करें, डिफ़ॉल्ट रूप से, केवल लाइन संख्या और स्रोत फ़ाइल जानकारी ०१२३५१६४१० है।उत्पन्न हुआ।

यह संकलन समय पर दृश्य आउटपुट उत्पन्न नहीं करता है लेकिन रन टाइम के दौरान डीबगिंग में उपयोग किया जाता है।

26

-g:vars विकल्प आपके वर्ग फ़ाइल में एक LocalVariableTable डाल देंगे। उदाहरण के लिए, इस परीक्षण वर्ग के साथ:

public class Test { 
    public static void main(String[] args) { 
     int mylocal = 1; 
     System.out.println("" + mylocal); 
    } 
} 

आप javap -l Test साथ वर्ग फ़ाइल में डिबगिंग जानकारी पर एक नज़र ले जा सकते हैं। कोई -g तर्क के साथ, वहाँ सिर्फ एक LineNumberTable है। जेवीएम उन स्टैकट्रैस में दिखाई देने वाली रेखा संख्या उत्पन्न करने के लिए उपयोग करता है। आप -g:vars साथ संकलन हैं, तो आप ध्यान देंगे अब एक LocalVariableTable कि इस तरह दिखता है है:

LocalVariableTable: 
Start Length Slot Name Signature 
0  3  0 args  [Ljava/lang/String; 
2  1  1 mylocal  I 

यह नाम और प्रत्येक पैरामीटर और स्टैक पर अपनी स्थिति से स्थानीय चर के प्रकार कैप्चर करता है।

आप आम तौर पर डिबगिंग के लिए इस की जरूरत नहीं है, तो आप स्रोत उपलब्ध नहीं है। हालांकि अगर आपके पास स्रोत नहीं है तो यह उपयोगी हो सकता है। उदाहरण के लिए, के साथ और -g:vars बिना jdb Test चलाएँ:

Initializing jdb... 
> stop in Test.main 
Deferring breakpoint Test.main. 
It will be set after the class is loaded. 
> run 
main[1] next 
main[1] next 
main[1] locals 
Method arguments: 
args = instance of java.lang.String[0] (id=354) 
Local variables: 
mylocal = 1 

आप केवल स्थानीय लोगों की सूची मिल जाएगा अगर वर्ग -g:vars साथ संकलित किया गया।

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