2016-04-22 10 views
7

में फोर्स सी ++ प्रोग्राम को रोकने के लिए मैं विंडोज़ के तहत एमएसवीसी के साथ संकलित सी ++ प्रोग्राम डीबग कर रहा हूं। मैं बहु थ्रेडिंग से जुड़े मुद्दे की जांच करना चाहता हूं। इसलिए मैंने अपने कोड में एएसएसईआरटी डाली और जब प्रोग्राम एएसएसईआरटी तक पहुंचा तो यह डीएसएस में प्रोग्राम को रोकने के प्रस्ताव के साथ एएसएसईआरटी (स्टैंडअर्ट [एबॉर्ट], [पुनः प्रयास], [अनदेखा] विंडो) के बारे में विंडो प्रदर्शित करता है। मैं [पुनः प्रयास करें] बटन और प्रोग्राम रोकता हूं। लेकिन जब मैं बटन दबा रहा था तो अन्य धागे निष्पादित करना जारी रखते थे। तो प्रश्न यह है कि प्रोग्राम को तुरंत कैसे रोकें जब यह किसी बिंदु पर पहुंच जाए कि उस समय अन्य धागे क्या कर रहे थे?विजुअल स्टूडियो डीबगर

उत्तर

2

आप एक assert उपयोग करने के बजाय एक सशर्त ब्रेकप्वाइंट सेट करना चाहें:

breakpoint visual studio

2

मामले में आप यह प्रोग्राम के रूप में करने के लिए, DebugBreak का उपयोग करना चाहते हैं। (सी # के बराबर एपीआई सिस्टम है। डायग्नोस्टिक्स.डेबगर। ब्रेक)

यदि आप इसे msdn page से आदर्श से करना चाहते हैं, तो आप ब्रेकपॉइंट (या सभी एप्लिकेशन को तोड़ सकते हैं, ctrl + alt + B) से दृश्य स्टूडियो और फिर थ्रेड विंडो में "फ्रीज" और "थॉ" का उपयोग करके थ्रेड निष्पादन को नियंत्रित करें।

+1

कभी-कभी संकलक आंतरिक __debugbreak() को डीबगब्रैक (जो कर्नेल 32 निर्यात है) पर प्राथमिकता दी जाती है, क्योंकि अंतर्निहित अभी भी भरोसेमंद है जब एमएस सिस्टम प्रतीकों को डीबगर में लोड नहीं किया जाता है। –

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