क्या मैं सच में चाहते ट्रेस काम करने के लिए है ...
आप MFC ट्रेस मैक्रो मतलब है? वह जो डीबगर की डीबग/आउटपुट विंडो में संदेश लिखता है?
दुर्भाग्यवश, भले ही आप अपनी बिल्ड सेटिंग्स को ठीक करते हैं, ताकि आपके अंतिम निष्पादन योग्य में आपकी स्थिर लाइब्रेरी के लिए डीबग जानकारी हो, यह उन ट्रेस स्टेटमेंट को वापस नहीं लाएगा। ट्रेक एक मैक्रो है और इसलिए संकलक प्रीप्रोसेसर द्वारा संभाला जाता है। जब आप रिलीज मोड में संकलित करते हैं, तो उस मैक्रो को नो-ऑप होने के लिए फिर से परिभाषित किया जाता है। ऐसा लगता है जैसे स्रोत कोड से TRACE कथन हटा दिया गया था।
भले ही आप अपनी लाइब्रेरी और निष्पादन योग्य में डीबग प्रतीकों को जोड़ने की समस्या का समाधान करते हैं, फिर भी यह उन ट्रेस स्टेटमेंट को वापस नहीं लाएगा। उन्हें संकलन चरण के दौरान हटा दिया गया था।
तो क्या करना है? बाहर निकलता है, अगर आप उन मैक्रोज़ में काफी गहराई से खुदाई करते हैं, तो वे आखिरकार Win32 फ़ंक्शन OutputDebugString पर कॉल कर रहे हैं। यह कॉल एमएस पुस्तकालयों के डीबग और रिलीज संस्करण दोनों में उपलब्ध है। तो ... आप आउटपुटडिबगस्ट्रिंग को स्पष्ट कॉल के साथ ट्रेस मैक्रोज़ को प्रतिस्थापित कर सकते हैं - यह कोड के साथ सुविधाजनक नहीं है लेकिन कम से कम आपको रिलीज मोड में अपना डीबग आउटपुट मिल जाएगा।
बीटीडब्ल्यू, मैंने अंततः उन सभी मैक्रोज़ को छोड़ दिया और हमने उन्हें log4cplus कॉल के साथ पूरी तरह से बदल दिया है। कोई भी लॉगिंग ढांचा ट्रेस मैक्रोज़ से बेहतर होगा - क्योंकि जब आपको वास्तव में ट्रेसिंग की आवश्यकता होती है तो वह तब नहीं होता जब आप डिबगिंग कर रहे हों, लेकिन जब आपका कोड उत्पादन में होता है और आप स्थानीय रूप से समस्या को पुन: पेश नहीं कर सकते हैं। एक फ़ाइल में लॉग इन करना बेहतर होता है जिसे ग्राहक आपको भेज सकता है, फिर ट्रेसिंग पर निर्भर करता है जो केवल डीबगर में काम करता है। किसी भी तरह से विचार करने के लिए ...
स्रोत
2012-12-21 05:52:41
क्या आप एक स्थिर पुस्तकालय या डीएलएल के बारे में बात कर रहे हैं? –
@ जेरीकॉफिन यह स्थिर पुस्तकालय कोई डीएलएल नहीं है। – zar
आप किस प्रकार का एप्लिकेशन चला रहे हैं? – makc