2008-10-28 4 views
18

मैं अपना प्रोग्राम सी # में लॉन्च करता हूं, जो तब कुछ अप्रबंधित सी ++ कहता है।मैं मिश्रित (सी #/सी ++) डीबगिंग में डेटा ब्रेकपॉइंट कैसे सेट करूं?

जब मैं अप्रबंधित सी ++ में एक पंक्ति को तोड़ता हूं, तो 'नया डेटा ब्रेकपॉइंट' मेनू आइटम ग्रे हो जाता है।

क्या इसके आसपास वैसे भी है?

उत्तर

16

मिश्रित मोड प्रक्रिया के मूल भाग में डेटा ब्रेकपॉइंट सेट करने के लिए, answer posted by jyoung देखें।

विजुअल स्टूडियो शुद्ध, देशी कोड के अलावा कुछ भी चलाते समय डेटा ब्रेकपॉइंट अक्षम करता है। एक वीएस प्रोग्राम मैनेजर से आंशिक स्पष्टीकरण के लिए this पोस्ट देखें।

+3

"आंशिक स्पष्टीकरण" = टीम ने इसके लिए कभी कोड नहीं लिखा। –

30

तो यह मैं करना पड़ा करने के लिए:

  • स्टार्टअप परियोजना
  • स्टार्टअप आदेश
  • सेट डिबग मोड के रूप में मूल निवासी के रूप में प्रबंधित कार्यक्रम सेट के रूप में अप्रबंधित dll सेट
  • "ब्रेक निष्पादन" या ब्रेकपॉइंट मारा ताकि आप "डीबगिंग" स्थिति में हों

yech

+3

त्वरित नोट: जैसा कि आपने अपने प्रश्न में उल्लेख किया है, मेनू प्रोग्राम उपलब्ध होने के लिए आपका प्रोग्राम "ब्रेक" स्थिति में होना चाहिए। – dss539

+0

धन्यवाद। भी मिश्रित किया जा सकता है। – Justin

+0

मैं इस उत्तर को कभी भी ऊपर नहीं उठा सकता। इस विस्तृत प्रक्रिया के लिए फिर से धन्यवाद। – wil

4

सुझाया गया समाधान हर समय काम नहीं करता है। यहां तक ​​कि मूल मोड में डिबगिंग करते समय, कोड के मूल भाग में टूटा हुआ प्रोग्राम, 'न्यू डेटा ब्रेकपॉइंट' सेट करने का प्रयास करते समय मुझे पॉपअप मिलता है "ब्रेकपॉइंट सेट नहीं किया जा सकता है। डेटा ब्रेकपॉइंट्स सामान्य भाषा रनटाइम में समर्थित नहीं हैं "

वैकल्पिक रूप से कोड से डेटा ब्रेकपॉइंट जोड़ने का विकल्प है। आलेख here देखें।

इस मिश्रित-मोड में अच्छी तरह से काम करता है, यह केवल मूल निवासी डिबगिंग मोड (जैसा कि ऊपर का सुझाव दिया) की आवश्यकता है सक्रिय होने के लिए

1

एक बहुत ही उपयोगी चाल जो हर जगह काम करता है विशेष परिस्थितियों में कोड से ब्रेकपाइंट कॉल करने के लिए है:

If (Condition) 
    System.Diagnostics.Debugger.Break() 
संबंधित मुद्दे