2011-09-12 14 views
6

मेरे पास निम्न कोड है:विजुअल स्टूडियो में अज्ञात नेमस्पेस के अंदर फ़ंक्शन नाम द्वारा ब्रेकपॉइंट कैसे सेट करें?

namespace 
{ 
    void Foo() 
    { 
    } 
} 

namespace Bar 
{ 
    void Foo() 
    { 
    } 
} 

int main() 
{ 
    Foo(); 
    Bar::Foo(); 

    return 0; 
} 

मैं नाम से अज्ञात नेमस्पेस के अंदर Foo() पर ब्रेकपॉइंट रखना चाहता हूं (Ctrl + B कुंजी बाध्यकारी)। मैं नाम Bar::Foo नाम से कोई समस्या नहीं नामित नामस्थान Bar के अंदर समारोह के लिए कर सकता हूं। मैंने अज्ञात नेमस्पेस के लिए anonymous namespace::Foo की कोशिश की लेकिन वीएस इस नाम को पार्स करने में विफल रहता है, मुझे लगता है कि नाम में व्हाइटस्पेस चरित्र की वजह से। इसके अलावा मैंने अलग-अलग उद्धरण चिह्न डालने की कोशिश की लेकिन बिना किसी किस्मत के। क्या यह ब्रेकपॉइंट रखना संभव है?

+0

क्या आपने अभी तक ':: Foo' की कोशिश की है? –

+0

':: Foo' भी – ks1322

+0

डुनो में विफल रहा, लेकिन आप फ़ंक्शन के अंदर एक प्रकार को परिभाषित करने का प्रयास कर सकते हैं और 'टाइपिड (टी) .name' का उपयोग करके इसका नाम आउटपुट कर सकते हैं (आपको' 'हेडर) शामिल करना होगा, और संभवतः आप वहां देखेंगे कि फ़ंक्शन को किस प्रकार संदर्भित किया जाना है। –

उत्तर

3

मुझे बहुत समय पहले एक ही समस्या का सामना करना पड़ा (Debugging data in 'anynomous namespaces' (C++))। मैं एक अज्ञात नेमस्पेस में डेटा सदस्य के मूल्य को देखना चाहता था, लेकिन मैं यह नहीं कर सका।

अंत में, किसी ने मुझे http://msdn.microsoft.com/en-us/library/0888kc6a%28VS.80%29.aspx पर इंगित किया। हो सकता है कि आप सजाए गए फ़ंक्शन का नाम प्राप्त कर सकें और उस पर ब्रेकपॉइंट डाल सकें।

+0

हां, इससे मदद मिली। मुझे 'dumpbin.exe/प्रतीकों breakpoits.obj' का उपयोग करके सजाया गया फ़ंक्शन नाम मिला है [http://msdn.microsoft.com/en-us/library/b842y285(v=vs.80).aspx](http:/ /msdn.microsoft.com/en-us/library/b842y285(v=vs.80).aspx) और उस पर ब्रेकपॉइंट डालें। ऐसा लगता है कि वीएस में इसका कोई दूसरा तरीका नहीं है। – ks1322

0

ऐसा लगता है कि विजुअल स्टूडियो अज्ञात नेमस्पेस के अंदर फ़ंक्शन नाम द्वारा ब्रेकपॉइंट सेट नहीं कर सकता है। यहां तक ​​कि WinDbg भी ऐसा नहीं कर सकता है।

यदि आपके पास स्रोत हैं तो आप लाइन से ब्रेकपॉइंट सेट कर सकते हैं।

+0

सजाए गए फ़ंक्शन नाम से ऐसा करना संभव है। मेरी टिप्पणियों को एक और उत्तर में देखें। – ks1322

+0

हां, यह काम किया। मैंने ब्रेकपॉइंट सेट किया है? Foo @? A0xac6cc1fe @@ YAXXZ। मैंने पहले यह कोशिश की है लेकिन मुझे पहले याद आया? प्रतीक। –

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

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