http

2011-03-11 14 views
21

पर एक सार्वजनिक (या निजी) प्रतीक सर्वर सेट अप करना मैंने पाया है कि दस्तावेज के प्रत्येक टुकड़े (संदर्भ 1 से 5) साझा यूएनसी पथ का उपयोग करके एक प्रतीक सर्वर स्थापित करने के बारे में बात करते हैं, और फिर सही सेटिंग्स उपलब्ध कराते हैं स्थानीय डीबगर उदाहरण के लिए (चाहे _NT_SYMBOL_PATH या विजुअल स्टूडियो आईडीई डिबगिंग सेटिंग्स)।http

माइक्रोसॉफ्ट अपने सार्वजनिक प्रतीक स्टोर के लिए http के माध्यम से एक प्रतीक सर्वर (संदर्भ 6) उपलब्ध कराता है।

मैं अपने स्वयं के कोड के लिए, एक यूआरसी फ़ाइल साझाकरण के बजाय, http परिवहन पर पहुंचने वाला एक प्रतीक सर्वर बनाना चाहता हूं। मोज़िला लोगों ने ऐसा किया है (संदर्भ 7), लेकिन यह अब कार्यात्मक नहीं है।

क्या इस कार्य को करने के लिए अब तक बेहतर संदर्भ उपलब्ध हैं?


संदर्भ

  1. https://msdn.microsoft.com/en-us/library/b8ttk8zy(v=vs.80).aspx
  2. http://msdn.microsoft.com/en-us/library/ms680693(v=vs.85).aspx
  3. http://stackhash.com/blog/post/Setting-up-a-Symbol-Server.aspx
  4. http://entland.homelinux.com/blog/2006/07/06/ ...
  5. http://msdn.microsoft.com/en-us/windows/hardware/gg462988
  6. http://support.microsoft.com/kb/311503
  7. http://developer.mozilla.org/en/Using_the_Mozilla_symbol_server
+0

संदर्भ: 1. http://msdn.microsoft.com/en-us/library/b8ttk8zy.aspx 2. http://msdn.microsoft.com/en-us/library/ms680693(v = vs.85)।एएसपीएक्स 3. http://www.stackhash.com/blog/post/Setting-up-a- सिंबल- सेवर.एएसपीएक्स 4. http://entland.homelinux.com/blog/2006/07/06/ सेटिंग-अप-ए-प्रतीक-सर्वर/ 5. http://msdn.microsoft.com/en-us/windows/hardware/gg462988 6. http://support.microsoft.com/kb/311503 7 https://developer.mozilla.org/en/Using_the_Mozilla_symbol_server –

+1

क्या होगा यदि आप इसे आईआईएस के साथ वेबडाव-सक्षम फ़ाइल शेयर पर सेट करते हैं? हो सकता है कि एमएस क्या करे। –

+0

तो शायद यह करने के लिए एक टीसीपी कनेक्शन मॉनीटर को हुक अप करें और यह देखने के लिए कि यह क्या और कैसे करता है, यातायात को http://dl.microsoft.com पर जा रहा है। जेम सिटी से –

उत्तर

13

मेरा मानना ​​है कि इस सवाल का जवाब एक बहुत ही सरल है, "बस http पथ के कुछ प्रकार के माध्यम से निर्देशिका को साझा करें।" Chad Austin's entry on "Creating Your Very Own Symbol Server" के अनुसार, यह बस काम करेगा।

दूसरे शब्दों में, symstore.exehttp://symbols.example.com/public_symbols/ के रूप में कार्य करते समय, प्रतीकों को संग्रहीत करने के लिए उपयोग की जाने वाली निर्देशिका, विंडोज डिबगिंग टूल्स के लिए प्रतीक सर्वर लक्ष्य के रूप में प्रयोग योग्य होगी।

+1

+1। – trashgod

+2

चाड ऑस्टिन का आलेख इस बात का जिक्र नहीं करता है कि HTTP के माध्यम से प्रतीक सर्वर का खुलासा कैसे किया जाए। – Crashworks

11

सावधान रहें जब एकाधिक उपयोगकर्ता सिमस्टोर.एक्सई का उपयोग उसी प्रतीक स्टोर के खिलाफ सीधे करते हैं। इस विषय पर माइक्रोसॉफ्ट के श्वेत पत्र इसे ध्वनि बनाते हैं जैसे कि आप बस एक शेयर बनाते हैं और विंडोज़ के लिए डीबगिंग टूल्स के हिस्से के रूप में वितरित SYMSTORE.EXE प्रोग्राम के माध्यम से सभी को अद्यतन करते हैं। श्वेत पत्रों ने आपको सलाह दी है कि यह प्रत्येक निर्माण द्वारा किया जाए।

और यह एकल उपयोगकर्ताओं के साथ बहुत अच्छा काम करता है या एक ऐसे व्यक्ति के माध्यम से सभी अद्यतनों को फ़नल करता है जो टीम के लिए प्रतीक सर्वर अपडेट कर रहा है।

दुर्भाग्यवश, कुछ सफेद कागजात के नीचे "ठीक प्रिंट" कहता है कि केवल एक उपयोगकर्ता symstore.exe चल रहा है, सामग्री को तोड़ने के बिना साझा प्रतीक सर्वर को एक ही समय में अपडेट कर सकता है।

(उदाहरण: http://msdn.microsoft.com/en-us/library/ms681417(VS.85).aspx पर, माइक्रोसॉफ्ट का कहना है: "नोट सिमस्टोर एकाधिक उपयोगकर्ताओं से एक साथ लेनदेन का समर्थन नहीं करता है। यह अनुशंसा की जाती है कि एक उपयोगकर्ता को प्रतीक स्टोर के" व्यवस्थापक "को नामित किया जाए और सभी एड और डेल लेनदेन के लिए जिम्मेदार हो। ")

तो प्रतीक स्टोर के अपडेट को क्रमबद्ध करने के लिए कोई अंतर्निहित तंत्र नहीं है। ऐसा प्रतीत होता है कि प्रतीक स्टोर को अपडेट करने के कई, एक साथ प्रयास प्रतीक स्टोर और/या इसकी अनुक्रमणिका को तोड़ सकते हैं।

हम अपने पूरे बहु-हज़ार व्यक्ति, अंतर्राष्ट्रीय निगम के लिए किसी भी स्थान पर एक व्यक्ति के माध्यम से समन्वय पर निर्भर सभी समय क्षेत्र के लिए निर्माण नहीं कर सकते हैं।

उन श्वेत पत्रों के आधार पर, मैंने मार्च 200 9 में माइक्रोसॉफ्ट के साथ इस मुद्दे को उठाया; जिन्होंने पुष्टि की कि यह एक संभावित मुद्दा था। उस चर्चा के बाद, हमने एक प्रतीक अद्यतन सेवा को लागू करना चुना जो प्रत्यक्ष विंडोज डिबगिंग उपकरण एसडीके DbgEng.DLL SymbolSrvStoreFile() एपीआई कॉल के माध्यम से अद्यतनों को क्रमबद्ध करता है, इसलिए एक ही समय में प्रतीकों के उसी क्षेत्र के खिलाफ दो एक साथ अपडेट की संभावना नहीं होती है । उपयोगकर्ताओं के पास एक बिल्ड एक्शन है जो सीधे प्रतीक स्टोर को अपडेट करने के बजाय सेवा के माध्यम से अपने प्रतीकों को कतारबद्ध करता है। सेवा फिर यह सुनिश्चित करने के लिए अद्यतनों को क्रमबद्ध करती है कि सही समवर्ती अद्यतन प्रयास कभी नहीं होते हैं।

उस समय SymSrvStoreFile का उपयोग करने के बारे में उपलब्ध सीमित दस्तावेज बहुत स्पष्ट नहीं था। मुझे यह काम मिल गया। उम्मीद है कि तब से इसमें सुधार हुआ है। यदि नहीं, तो सबसे महत्वपूर्ण मुद्दा यह था कि इनपुट पथ को _NT_SYMBOL_PATH के समान प्रारूप में निर्दिष्ट किया जाना चाहिए। तो उदाहरण के लिए, इनपुट पथ के रूप में "सी: \ डेटा \ MyProject \ bin" का उपयोग करके, आप इसके बजाय "srv * c: \ data \ MyProject \ bin" निर्दिष्ट करेंगे।

हमारी सेवा अब डेटाबेस के माध्यम से अद्यतन लॉग भी करती है। डेटाबेस दोनों प्रतीक स्टोर में बैकअप के रूप में कार्य करता है (यदि यह कभी भी दूषित हो जाता है और उसे पुनर्निर्मित किया जाना चाहिए) और यह एक रिपोर्टिंग पॉइंट भी बनाता है ताकि प्रबंधकों और लोगों को यह पता चल सके कि वास्तव में उनके प्रतीकों को कौन बचा रहा है और कौन नहीं है। हम एक साप्ताहिक "प्रतीक चेक-इन" रिपोर्ट उत्पन्न करते हैं जो हितधारकों को ऑटो-ईमेल किया जाता है।

5

हमारा (मोज़िला) प्रतीक सर्वर ठीक काम करता है, AFAICT। हम कुछ भी विशेष रूप से जटिल नहीं कर रहे हैं, हम सिर्फ पीडीबी फाइलों को सही निर्देशिका संरचना में डालते हैं (हमारे पास a script for that है, लेकिन आप symstore.exe का उपयोग कर सकते हैं) और अपाचे के माध्यम से इसे प्रस्तुत कर सकते हैं। मुझे लगता है कि हमारे पास एकमात्र विशेष चीज है जो कुछ गैर-केस-संवेदी तरीके से फ़ाइलों तक पहुंचने की अनुमति देने के लिए कुछ नियम हैं, क्योंकि माइक्रोसॉफ्ट के उपकरण वास्तव में फाइलनाम/GUID मामले के बारे में असंगत हैं।

+0

नया लिंक https://dxr.mozilla.org/mozilla-central/source/toolkit/crashreporter/tools/symbolstore.py है – PhilLab

4

HTTP के माध्यम से कार्यरत एक प्रतीक सर्वर में एक समान संरचना है जो प्रतीक सर्वर के रूप में एक यूएनसी फ़ाइल पथ के माध्यम से कार्य करता है, इसलिए सबसे आसान काम symstore.exe का उपयोग किसी फ़ोल्डर में फ़ाइलों को संग्रहीत करने के लिए करना होगा और फिर एक का उपयोग करना होगा सरल HTTP सर्वर जो HTTP के माध्यम से उस फ़ोल्डर को उजागर करता है (प्रतीकों में भी python -m SimpleHTTPServer चला रहा है डीआईआर काम करेगा)।

एक छोटा गॉचा यह है कि यदि कोई प्रतीक फ़ाइल मौजूद नहीं है, तो HTTP सर्वर को 404 त्रुटि कोड लौटा देना चाहिए (कम से कम विजुअल स्टूडियो 2013 के तहत परीक्षण किया गया)। मैं एक ऐसे मुद्दे में भाग गया जहां लापता फाइलों के लिए 403 लौटने वाला एक HTTP सर्वर विज़ुअल स्टूडियो को पहले विफल अनुरोध के बाद अनुरोध करने से रोकना पड़ा।

symstore.exe कई सहायक फाइलें और फ़ोल्डरों (000Admin/ फ़ोल्डर, refs.ptr और files.ptr फ़ाइलों) बनाता है। प्रतीक सर्वर के काम करने के लिए इनमें से कोई भी आवश्यक नहीं है।

आप symstore.exe का उपयोग किए बिना एक प्रतीक दुकान बनाना चाहते हैं, तो आप इस संरचना के साथ फाइल अपलोड कर सकते हैं:

BinaryName.pdb/$BUILD_ID/BinaryName.pdb BinaryName.exe/$LINK_ID/BinaryName.exe

कहाँ BUILD_ID एक GUID PDB फ़ाइल और निष्पादन योग्य और LINK_ID में एम्बेडेड है निष्पादन योग्य में टाइमस्टैम्प और फ़ाइल आकार बनाने का एक संयोजन है। इन्हें ब्रेकपैड लाइब्रेरी से dump_syms.exe उपकरण के आउटपुट को पढ़कर प्राप्त किया जा सकता है। http://www.chromium.org/developers/decoding-crash-dumps

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