2015-01-20 10 views
5

में डीबग मोड में एएसएसईआरटी को कैसे बंद करें रिलीज मोड पर स्विच करने के बजाए आवेषण बंद करने का कोई तरीका है। मुझे ऐसे कोड को डीबग करने की ज़रूरत है जो वास्तव में दावा करता है और यह मेरे काम को धीमा कर देता है। ये आवेषण उस मुद्दे से संबंधित नहीं हैं जो मैं हल करने की कोशिश कर रहा हूं, इसलिए अब वे केवल मेरी प्रगति को धीमा कर देते हैं, क्योंकि उन्हें अक्सर मेरे मूल वर्गों में से एक में बुलाया जाता है। अब मेरे पास उनके डिज़ाइन को बेहतर बनाने का समय नहीं है, इसलिए कोई मुझे बता सकता है कि डीबग मोड में होने और इसकी क्षमताओं का उपयोग करते समय आवेषण बंद करने का कोई तरीका है या नहीं।विजुअल स्टूडियो 2013

उत्तर

11

उपयोगकर्ता _CrtSetReportMode

int iPrev = _CrtSetReportMode(_CRT_ASSERT,0); 
// Start Operation with no ASSERTs 
... 
// Restore previous mode with ASSERTs 
_CrtSetReportMode(_CRT_ASSERT,iPrev); 
इसके बजाय 0 का उपयोग करने का

, आप _CRTDBG_MODE_DEBUG केवल उपयोग कर सकते हैं।

1

#define NDEBUG#include <assert.h>assert मैक्रो अक्षम करने के लिए।

आप इसे परियोजना सेटिंग्स में प्री-प्रोसेसर परिभाषा में जोड़ सकते हैं।

+0

उपयोगी जानकारी, हालांकि एमएफसी 'एएसएसईआरटी' मानक पुस्तकालय 'जोर' के समान नहीं है और इसे अलग-अलग नियंत्रित किया जाता है। – bames53

3

विफलता रिपोर्टिंग विधि को बदलने और मोडल संवाद बॉक्स से बचने के लिए आप _set_error_mode या _CrtSetReportMode (xMRi का उत्तर देखें) का उपयोग कर सकते हैं। वहाँ कोड स्निपेट देखें:

int main() 
{ 
    _set_error_mode(_OUT_TO_STDERR); 
    assert(2+2==5); 
} 

भी ध्यान रखें कि जोर विफलताओं एक कारण के लिए आम तौर पर कर रहे हैं, और तुम सिर्फ रिपोर्ट को दबाने नहीं कोड को ठीक करना चाहते हैं,। डीबग से उन्हें हटाकर पूरी तरह से बनाता है आप बस आपके लिए बनाई गई अच्छी चीजें तोड़ रहे हैं।

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