2012-02-21 11 views
6

मैं मूल रूप से दृश्य स्टूडियो सी ++ एक्सप्रेस का इस्तेमाल किया, मैं क्यों डिबगर उदाहरण के लिए, मेरी breakpoints बढ़ रहा है के रूप में अंतिम और im वर्तमान में उलझन में बदल लिया है:दृश्य स्टूडियो ले जाया जा रहा breakpoints

if(x > y) { 
    int z = x/y;   < --- breakpoint set here 
} 
int h = x+y;    < --- breakpoint is moved here during run time 

या

random line of code  < --- breakpoint set here 
random line of code 

return someValue;  < --- breakpoint is moved here during run time 

ऐसा लगता है कि यह कोड में यादृच्छिक स्थानों पर ऐसा करता है। क्या कभी कभी मैं गलत कर रहा हूँ? इस तरह के व्यक्त संस्करण के साथ मुझे कभी कोई समस्या नहीं हुई है।

उत्तर

10

आप रिलीज मोड में डिबगिंग कर रहे हैं।

if(x > y) { 
    //this statement does nothing 
    //z is a local variable that's never used 
    //no executable code is generated for this line 
    int z = x/y;   < --- breakpoint set here 
} 
//the breakpoint is set on the next executable line 
//which happens to be this one 
int h = x+y;    < --- breakpoint is moved here during run time 

आमतौर पर डिबगर्स बाइनरी कोड के अंदर हुक सेट करते हैं। यदि int z = x/y के लिए कोई बाइनरी कोड निष्पादित नहीं किया गया है, तो आप वहां ब्रेकपॉइंट सेट नहीं कर सकते हैं।

अगली रिलीज मोड में इस संकलन से उत्पन्न होता है:

if(x > y) 
{ 
    int z = x/y;//   < --- breakpoint set here 
} 
int h = x+y; 
cout << h; 
003B1000 mov   ecx,dword ptr [__imp_std::cout (3B203Ch)] 
003B1006 push  7  
003B1008 call  dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (3B2038h)] 

यह परीक्षण करने के, तो आप इस सरल परिवर्तन कर सकते हैं:

if(x > y) { 
    int z = x/y; 
    std::cout << z << endl; // <-- set breakpoint here, this should work 
} 
int h = x+y;    
+0

मैं मानता हूँ यह सबसे likly कारण है, मैं करूंगा यह भी ध्यान रखें कि अतीत में मैंने डीबगर और आईडीईई के माध्यम से लाइन टर्मिनेशन भिन्नता (एनएल बनाम सीआर एनएल) के कारण रिपोर्ट की गई रेखाओं के बीच विच्छेदन देखा है। मुझे इस बिंग को बोर्लैंड डेल्फी उत्पादों में एक बड़ा मुद्दा याद है, लेकिन मुझे यह नहीं लगता एक मुद्दा है वीएस। – tletnes

+0

@ टेटनेस हम्म दिलचस्प, मैंने कभी इसका सामना नहीं किया है हालांकि वीएस में। –

+0

ठीक है! मैंने पूरी तरह से अनदेखा किया कि मैं रिलीज मोड में था। धन्यवाद! – kbirk

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