2012-06-19 17 views
13

से पीडीबी संदर्भों को हटाएं मैं डीबगिंग के बाद अंतिम बाइनरी निष्पादन योग्य या डीएल पर हमेशा एक नज़र डालने और किसी भी आईडीई के साथ फाइल बनाने के लिए उपयोग करता हूं। अब मैं कचरा या अनावश्यक संदर्भों के बिना, सर्वश्रेष्ठ रिलीज की खोज में विजुअल सी ++ 2010 का प्रयास कर रहा हूं। तो, मैंने दो परियोजनाओं के साथ एक नया समाधान बनाया: एक निष्पादन योग्य और इसकी डीएलएल। वीसी ++ ने कोड और अंतिम फ़ाइल के बीच कई मध्यस्थ फाइलें बनाई हैं। मैंने .exe और .dll को हेक्साडेसिमल संपादक के साथ खोला और ऐसा कुछ देखा जो मुझे पसंद नहीं आया। फ़ाइल के अंदर कहीं भी पीडीबी फ़ाइल का एक पूर्ण पथ है।रिलीज फ़ाइल

क्यों? मैं इसे वीसी ++ से कैसे हटा सकता हूं?

इसके लिए कुछ प्री-प्रोसेसर कमांड होना चाहिए। एक पीडीबी फ़ाइल के लिए एक पूर्ण पथ का उपयोग क्या है, जैसे "डी: \ माय प्रोजेक्ट्स \ प्रोजेक्ट 1 \ रिलीज \ प्रोजेक्ट 1.pdb" फाइल के बाइनरी के अंदर जो विभिन्न फ़ोल्डरों वाले कंप्यूटरों पर वितरित किया जाएगा? इसके अलावा, मैं अपने ड्राइव के मार्गों में से एक को बाइनरी फ़ाइल के अंदर सहेजना नहीं चाहता हूं जिसे मैं अन्य लोगों के साथ साझा करना चाहता हूं। मैं रिलीज मोड में हूं, मुझे उस अनावश्यक जानकारी का उपयोग नहीं दिख रहा है। मैं इसे कैसे हटा सकता हूं? धन्यवाद!

+0

के इस [सवाल] संभावित डुप्लिकेट [1]? आप पीडीबी के पथ को हटा सकते हैं। लेकिन, कृपया पीडीबी के संदर्भ में रखें। [1]: http: // stackoverflow।कॉम/प्रश्न/75 9 6628/स्ट्रिप-द-पथ-टू-द-पीडीबी – mox

उत्तर

7

MSDN पर PDB Files प्रलेखन पढ़ें:

एक कार्यक्रम डेटाबेस (PDB) फ़ाइल डिबगिंग और परियोजना राज्य सूचना है कि अपने कार्यक्रम का एक डीबग विन्यास के वृद्धिशील जोड़ने की अनुमति देता है रखती है। एक पीडीबी फ़ाइल तब बनाई जाती है जब आप एक सी/सी ++ प्रोग्राम/जेआईआई या/जीआई या विज़ुअल बेसिक/सी #/जेस्क्रिप्ट .NET प्रोग्राम/डीबग के साथ संकलित करते हैं।

विजुअल सी ++ में,/एफडी विकल्प संकलक द्वारा बनाई गई पीडीबी फ़ाइल का नाम है। जब आप विज़ार्ड का उपयोग कर विजुअल स्टूडियो में कोई प्रोजेक्ट बनाते हैं, तो/एफडी विकल्प प्रोजेक्ट.पीडीबी नामक पीडीबी बनाने के लिए सेट होता है।

ध्यान दें कि निरपेक्ष पथ दस्तावेज में उल्लेख किया गया है:

विजुअल स्टूडियो डीबगर लिंकर सीधे द्वारा बनाई project.PDB फ़ाइल का उपयोग करता है और EXE में PDB का निरपेक्ष पथ एम्बेड करता है या डीएलएल फ़ाइल।

तुम हमेशा> प्रोजेक्ट गुण> लिंकर> डिबगिंग के लिए जाना डीबग जानकारी उत्पन्न और नहीं।

+0

यह अजीब बात है कि भले ही मैं रिलीज मोड में हूं, पीडीबी फाइलें अभी भी जेनरेट की गई हैं। आपके उत्तर के लिए धन्यवाद – ali

+0

@ali: जब आप कोई नई प्रोजेक्ट बनाते हैं तो यह डिफ़ॉल्ट सेटिंग होती है। हालांकि, आप इसे हमेशा बंद कर सकते हैं। ध्यान दें कि पीडीबी केवल * डिबगिंग * और * वृद्धिशील लिंकिंग * के लिए आवश्यक है और आपको इसे शिप करने की आवश्यकता नहीं है (जब तक कि आप अपने ग्राहकों को डीबग करने में सक्षम न हों)। – dirkgently

+3

ओ.के. धन्यवाद! अब मैं बदल गया और यह काम करता है! मुझे बाइनरी कोड में प्रकट तारों को देखने से नफरत है! – ali

9

आप /pdbpath:none उपयोग कर सकते हैं PDB फ़ाइल का पूर्ण योग्य पथ नाम निकालने के लिए, लेकिन रखने के लिए करने के लिए सेट कर सकते हैं केवल पीडीबी का नाम और विस्तार। जारी छवियों के लिए पीडीबी का नाम (और विस्तार) रखना एक ऐसी छवि है जो बगड़ी वाली छवि को डीबग करने का एकमात्र तरीका है। विंडोज छवियां लगभग हमेशा पीडीबी का नाम और विस्तार रखती हैं!

+3

यह बेहतर समाधान है, हालांकि नए संस्करणों ने विकल्प का नाम बदल दिया है और अब आपको लिंकर को '/ pdbaltpath:% _ PDB%' पास करना होगा। –

2

आप एक बाहरी उपकरण का उपयोग कर कोई आपत्ति नहीं है और आप के साथ/pdbpath अपने मॉड्यूल पुनर्निर्माण नहीं कर सकता: कोई नहीं, peupdate उपकरण, सूची हटाने या एक निष्पादन योग्य मॉड्यूल में PDB स्ट्रिंग को बदलने के लिए इस्तेमाल किया जा सकता:

http://bytepointer.com/tools/index.htm#peupdate

आप के रूप PDB पथ स्पष्ट करने के लिए इस प्रकार उपकरण का उपयोग कर सकता है:

peupdate -c <module_path> 
संबंधित मुद्दे