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