2011-09-29 10 views
7

डिफ़ॉल्ट के अनुसार, जब रिलीज़ मोड में एक दृश्य स्टूडियो परियोजना संकलन, pdb पूर्ण पथ छवि फ़ाइल में डाल दिया है, जैसे करने के लिए पथ:पट्टी pdb

c:\myprojects\demo\release\test.pdb 

एक गैर-दस्तावेजी लिंकर स्विच का उपयोग करना (/pdbpath:none) एक, pdb से भरा योग्य नाम को कम करने जैसे विजुअल स्टूडियो 2008 के लिए मजबूर कर सकते हैं:

test.pdb 

मैं एक परियोजना है जो अभी भी VC6 का उपयोग कर बनाया गया है साथ भी ऐसा ही करने की जरूरत है।

मैं परियोजना सेटिंग्स स्तर पर "/pdbpath:none" स्विच कोशिश की, लेकिन लिंकर इस अज्ञात स्विच के बारे में शिकायत।

किसी को भी एक तरीका है (या एक उपकरण) यह पूरा करने के जानता है या तो जब एक VC6 परियोजना को जोड़ने या बाद में सीधे छवि स्तर पर?

+0

यह स्विच विजुअल स्टूडियो 2010 – mox

+0

से शुरू होने वाला (दस्तावेज) उपलब्ध है यह स्विच विजुअल स्टूडियो 2008 के साथ भी काम कर रहा है। – mox

+0

पेपरडेट नामक एक उपकरण है ([वेबसाइट यहां] (http://bytepointer.com/tools/index .htm # peupdate)) जो इस पीडीबी स्ट्रिंग को किसी EXE या DLL के लिए किसी भी मनमाना मान को हटा, स्ट्रिप या अन्यथा बदल देगा। अपने विशेष प्रश्न के लिए, आप पथ को हटाने के लिए "-s" (स्ट्रिप) विकल्प का उपयोग करेंगे, लेकिन फ़ाइल नाम को बरकरार रखें। – byteptr

उत्तर

2

आपकी सर्वश्रेष्ठ शर्त सीधे एमएस से pdbstr.exe का उपयोग करना है। यह सीधे निष्कर्षण, अद्यतन, और अन्य कार्यों को सीधे, संकलक संस्करण से स्वतंत्र (अंतिम समर्थित संस्करण तक, जो मुझे लगता है कि अभी VS2013 है) के लिए अनुमति देता है। हम इसका उपयोग पीडीबी को सीधे एसवीएन लिंकिंग जोड़ने के लिए करते हैं, जिसे हम स्थानीय प्रतीक स्टोर में srctool का उपयोग करके स्टोर करते हैं।

+0

धन्यवाद! यह देखने में दिलचस्प है कि यह उपयोगिता वैकल्पिक डेटा स्ट्रीम (एडीएस) का उपयोग करती है ... "लक्ष्य नियंत्रण जानकारी को" srcsrv "लक्ष्य .pdb फ़ाइल में वैकल्पिक स्ट्रीम में डालने के लिए"। – mox

+0

pdbstr.exe का उपयोग करने के लिए एक उदाहरण कमांड लाइन क्या होगी? दस्तावेज़ों के साथ भी, मैं इसे समझ नहीं पाया कि पथ को कैसे पट्टी करना है। – byteptr

+0

@byteptr देर से उत्तर के लिए खेद है। हम एक अस्थायी स्ट्रीम फ़ाइल ($ streamContent) में अपना नया ब्लॉक बनाने के लिए पॉवशेल स्क्रिप्ट का उपयोग करते हैं, और फिर निष्पादन योग्य को इस तरह सीधे कॉल करते हैं: । "$ ToolPath" /pdbstr.exe -w -s: srcsrv "-p: $ pdbFullName" "-i: $ streamContent" यह दिए गए स्ट्रीम को एक पीडीबीफुलनाम में निर्दिष्ट पीडीबी में एक srcsrv स्ट्रीम के रूप में जोड़ता है, जिसमें शामिल है पथ और वह सब। – Woody14619

0

नए link.exe संस्करणों के लिए, वाक्यविन्यास बदल गया।

इच्छित विकल्प अब है /pdbaltpath:%_PDB%

यह MSDN पर प्रलेखित है: https://msdn.microsoft.com/en-us/library/dd998269.aspx

%_PDB% किसी भी पथ जानकारी के बिना वास्तविक .pdb फ़ाइल का फ़ाइल नाम के लिए विस्तारित

वीसी 6 के लिए, आप एक ही कंपाइलर्स का उपयोग करना जारी रख सकते हैं लेकिन link.exe का एक नया संस्करण जारी रखना चाहेंगे।

विंडोज चालक किट भी binplace.exe नामक एक उपकरण है जो इस जानकारी के बाद निर्माण संशोधित कर सकते हैं साथ आते हैं।

+0

यह स्थिर पुस्तकालयों के लिए टूटा हुआ प्रतीत होता है।एलएनके 4044: अपरिचित विकल्प '/ pdbaltpath:% _ पीडीबी%'; अनदेखा – syplex

+0

@syplex: आप किस लिंकर का उपयोग कर रहे हैं? और स्थिर पुस्तकालयों को आपकी समस्या के साथ क्या करना है? –

+0

कुछ संस्करणों का प्रयास किया। संस्करण 14.12.25835.0 तक। एक स्थिर पुस्तकालय के लिए पीडीबी पथ निर्दिष्ट या परिवर्तित करने का तरीका जानने का प्रयास कर रहा है। पथ को .lib में एम्बेड किया गया है जैसे कि यह डीएलएल/EXEs (अलग-अलग हालांकि) के लिए है लेकिन इसे संशोधित करने का कोई तरीका नहीं है। मुझे उम्मीद है कि पीडीबीएएलटीपीएटीएच इस तरह काम करेगी, लेकिन कुछ भी नहीं मिला है। – syplex

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