2008-09-30 7 views
38

मैं रिमोट डीबगिंग का उपयोग करना चाहता हूं। प्रोग्राम जिसे मैं डिबग करना चाहता हूं मशीन बी पर चलता है। विजुअल स्टूडियो मशीन ए पर चलता है।रिमोट डीबगिंग के दौरान कोई प्रतीक लोड क्यों नहीं किया जाता है?

मशीन पर ख मैं निम्न फ़ाइलों के साथ एक फ़ोल्डर है:

  • msvcr72.dll
  • msvsmon.exe
  • NatDbgDE.dll
  • NatDbgDEUI.dll
  • NatDbgEE.dll
  • NatDbgEEUI.dll

अगर आपको लगता है कि कुछ फाइलें गायब हैं, तो क्या आप यह भी बता सकते हैं कि वे कहां स्थित हैं?

अगले चरण में मैंने msvsmon.exe और मशीन बी पर अपना प्रोग्राम शुरू किया। मशीन पर, मैंने विजुअल स्टूडियो 2008 और मेरा समाधान शुरू किया जिसमें कार्यक्रम लिखा गया था। फिर मैं "डीबग - प्रक्रिया से जुड़ा" चुनता हूं। मैंने चुना "रिमोट ट्रांसपोर्ट (केवल प्रमाणीकरण के साथ मूल)"। मैंने एक योग्य क्वालीफायर के रूप में सही आईपी का उपयोग किया और सही प्रक्रिया (program.exe) लिया।

program.exe में 0x7c812a7b पर

क्रिया के अपवाद: 0xE0434F4D: थोड़ी देर के बाद निम्न संदेश एक पॉपअप विंडो में हुई

0xe0434f4d

मैं जारी रखने या तोड़ सकता है; जारी रखते समय, अपवाद बार-बार होता है। इसलिए मैंने ब्रेक दबाया और निम्नलिखित संदेश हुआ:

किसी भी कॉल स्टैक फ्रेम के लिए कोई प्रतीक लोड नहीं किया गया है। स्रोत कोड प्रदर्शित नहीं किया जा सकता है।

+0

कॉल स्टैक कैसा दिखता है? कोई प्रतीक लोड नहीं हो सकता है क्योंकि इसने कार्यक्रम के आंतों में अपवाद फेंक दिया है। एकमात्र अन्य गॉचा यह सुनिश्चित करना है कि आपके पास रिमोट सिस्टम पर सही एक्सई है। – JeffFoster

+1

@ एक्सेल्युलॉइड: क्या आप प्रक्रियाओं और सबूत को जोड़ रहे हैं कि पीडीबी एक ही फ़ोल्डर में डीएलएस के साथ हैं, इस पर स्क्रीनिंग प्रदान कर सकते हैं? अंत में, क्या आप मॉड्यूल विंडो की स्क्रीनसी भी प्रदान कर सकते हैं (प्रक्रिया को संलग्न करने के बाद, ctrl-> alt-> दबाएं और देखें कि कौन से मॉड्यूल लोड किए गए हैं। –

उत्तर

24

सुनिश्चित करें कि आप दूरस्थ मशीन पर उसी फ़ोल्डर में अपनी असेंबली के साथ जेनरेट की गई पीडीबी फ़ाइल की प्रतिलिपि बना लें। यह डीबगर को डीबग प्रतीकों को पिकअप करने की अनुमति देगा।

+0

क्या इसे क्लाइंट मशीन से कॉपी किया जाना है? I रिमोट मशीन पर एक ही विजुअल स्टूडियो प्रोजेक्ट स्थापित किया है और इसमें अपनी खुद की पीडीबी फाइलें हैं। बिन फ़ोल्डर में, हालांकि मुझे अभी भी '..pdb लोड नहीं हुआ' संदेश – DevDave

+2

है .pdb फ़ाइलें आपके असेंबली के साथ उत्पन्न होती हैं, इसलिए वे प्रत्येक संस्करण के साथ नए हैं और कॉपी किया जाना चाहिए। –

+2

मेरे लिए समस्या यह थी कि मेरी विकास मशीन पर मेरी सभी विजुअल स्टूडियो परियोजनाएं डी: ड्राइव पर हैं, जबकि सर्वर में केवल सी है: ड्राइव + मैं एएसपी.नेट वेबसाइट विकसित कर रहा था। जिस तरह से मैंने समस्या हल की है -> प्रोजेक्ट प्रॉपर्टीज -> बिल्ड -> आउटपुट पथ -> सी: \ inetpub \ wwwroot \ mysite \ bin। इस तरह, .pdb पथ मेरी dev मशीन और सर्वर दोनों पर समान हो गए हैं। – kape123

4

0xE0434F4D सीएलआर (यानी, प्रबंधित कोड) से अपवाद है। आपको प्रमाणीकरण के साथ दूरस्थ डिबगिंग करने की आवश्यकता है और प्रबंधित कोड डीबग करना चुनें। वैकल्पिक रूप से, कुछ डीबगर एक्सटेंशन का उपयोग करके प्रबंधित अपवाद जानकारी निकालना संभव है लेकिन यह थोड़ा और कठिन काम है।

संदर्भ: अगर तुम नहीं जगह एक ही निर्देशिका जहां डिबग कोड मौजूद है में .pdb फ़ाइलें कर

If broken it is...

5

.NET में दूरस्थ रूप से डीबग काम नहीं करेगा।

यदि वीएस अभी भी डिबगिंग के लिए स्रोत नहीं ढूंढ पा रहा है, तो डीबग कोड और वीएस प्रोजेक्ट स्रोत समान संस्करण नहीं है। समाधान परियोजना का पुनर्निर्माण और पुनर्वितरण कर रहा है।

+1

क्या होता है जब असेंबली जीएसी पर होती है। डीएलएल के समान फ़ोल्डर में पीडीबी फाइलों को कैसे रखा जाए? : \ –

+1

आपका कौन सा फ़ोल्डर बिल्कुल सही है? – DevDave

16
  1. अपनी dev मशीन पर एक साझा फ़ोल्डर जोड़ें जो उस स्थान को इंगित करता है।pdb फ़ाइलें
  2. अपने देव मशीन

दूरस्थ डीबगर अब प्रतीकों के लिए अपने देव मशीन खोज करेंगे पर एक वातावरण चर दूरस्थ मशीन है कि साझा फ़ोल्डर के लिए अंक पर _NT_SYMBOL_PATH बुलाया सेट करें। हर निर्माण के लिए उन्हें कॉपी करने की जरूरत नहीं है।

एमएस वीडियो here देखें।

8-9 मिनट में देखना शुरू करें। वह दर्शाता है कि रिमोट डीबगर को अपनी विकास मशीन पर ड्राइव शेयर से प्रतीकों को लोड करने के लिए कैसे सेट अप करें।

शुभकामनाएं!

+1

किसी भी सफलता के बिना इस कोशिश की। –

+1

यह मेरे लिए पूरी तरह से काम किया। धन्यवाद। –

+0

मेरे सी ++ ऐप पर भी मेरे लिए काम किया, धन्यवाद! – GreatDane

3

1800 जानकारी सही है, आपको प्रबंधित कोड डीबग करने के लिए विंडोज प्रमाणीकरण के साथ दूरस्थ डिबगिंग करना है, अन्यथा आप प्रबंधित असेंबली के लिए प्रतीकों को लोड नहीं कर पाएंगे। प्रमाणीकरण के साथ काम करने के लिए यह बहुत मुश्किल है, क्योंकि इसे अन्य चीजों के साथ समान पासवर्ड वाले दोनों मशीनों पर स्थानीय खातों की आवश्यकता होती है। यह प्रश्न और हर किसी के जवाब उस काम को प्राप्त करने के लिए काफी उपयोगी हैं।

Remote Debugging in Visual Studio (VS2008), Windows Forms Application

3

मैं एक ही मुद्दों था। msdn forums मैं बस कॉपी कर देंगे/पर जवाब यहाँ सही जवाब पेस्ट मिला:

सुनिश्चित करें कि आप msvsmon.exe की सही संस्करण उपयोग कर रहे हैं !!! यह सब कुछ था! मुझे एक ही समस्या थी जबकि एक सी # एप्लिकेशन रिमोट डीबगिंग। मैं 64 msvsmon.exe उपयोग कर रहा था, क्योंकि सर्वर चलाता विंडोज सर्वर 2008 64-बिट, लेकिन आवेदन x86 के लिए लिखा गया था, इसलिए मैं से छुटकारा पाने के क्रम में msvsmon.exe का x86 संस्करण को चलाने के लिए किया था यह कष्टप्रद त्रुटि। कुछ और की आवश्यकता नहीं थी। बस msvsmon.exe के संस्करण को चलाने कि दृश्य स्टूडियो 2010 में अपने आवेदन^_^

+1

यह एक और कदम है और दुर्भाग्य से प्रमाणीकरण शामिल होने पर मुश्किल नहीं है। मेरे लिए यह कम से कम मदद की ताकि लोड मॉड्यूल => upvote देखें। – Lars

+0

गलत, क्योंकि यदि आप x64 विंडो पर x86 सेटअप चलाते हैं, तो यह बस बम है। मैंने अभी कोशिश की – Raffaeu

10
  • उपकरण मेनू पर का लक्ष्य वास्तुकला से मेल खाती है, विकल्प चुनें।
  • विकल्प संवाद बॉक्स में, डिबगिंग नोड खोलें और फिर जेनरल्स पर क्लिक करें।
  • चेक दिखाएँ सभी सेटिंग्स यदि आवश्यक हो तो और पता लगाने जस्ट माई कोड (केवल प्रबंधित)
  • सही का निशान हटाएँ यह सक्षम करें और ठीक क्लिक करें

आप दूरस्थ प्रक्रिया

+1

कॉल स्टैक स्थान पॉप्युलेट हो जाता है लेकिन मुझे अभी भी स्रोत कोड –

+1

नहीं मिला है यह मेरे लिए काम करता है। मैं फिर कॉल स्टैक देख सकता था। – Seidleroni

3

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

इसने मुझे चलने वाली किसी भी चीज के करीब डूबने की इजाजत दी है, जिसे मैंने लिखा है, भले ही यह एक गतिशील रूप से बुलाया गया असेंबली (कुछ ऐसा है जो मुझे केवल मेरे जीवन के लिए काम नहीं कर सका जब केवल असेंबली के साथ प्रतीकों को प्रकाशित कर रहा हो)। इस बहुत ही आसान सुविधा का उपयोग करें!

1

मैं गुण प्रोजेक्ट, टैब संकलित जा रहा है और मेरी रिमोट मशीन जैसे \ MyServer \ myshare \ myappdir

डिबग टैब में मैं उपयोग दूरस्थ मशीन के लिए उत्पादन बिल्ड पथ सेट करके ऐसा काम कर प्राप्त करने में सक्षम था चेक किया गया और myserver

0

प्रलेखन के अनुसार, मैंने प्रबंधित स्टूडियो 2012 के साथ दूरस्थ मशीन पर एक प्रबंधित विंडोज सेवा (.NET 4.5 के विरुद्ध बनाया गया) को जोड़ने का प्रयास किया) प्रतीकों रिमोट मशीन पर होना चाहिए।

तो, मैंने रिमोट मशीन पर केवल प्रतीकों को रखा है (सुनिश्चित करें कि वे रिमोट मशीन पर एप्लिकेशन के मॉड्यूल/असेंबली से मेल खाते हैं), इसे साझा करें और इसे स्थानीय सिस्टम (जहां बनाम चल रहा है) से प्रतीक सेटिंग्स के माध्यम से संदर्भित किया गया है।

नोट: सेवा और प्रतीकों को उसी निर्देशिका पर नहीं होना चाहिए क्योंकि यह मेरे लिए 2k12 + .net 4.5 विंडोज सेवा के साथ काम कर रहा है।

जानकारी के लिए :

http://msdn.microsoft.com/en-us/library/bt727f1t(v=vs.100).aspx

लिंक से अंश:

लगाने प्रतीक (.pdb) फ़ाइलें


प्रतीक फ़ाइलों के लिए डिबगिंग जानकारी होती है संकलित निष्पादन योग्य। अनुप्रयोग की प्रतीकात्मक फ़ाइलों को डीबग किया जाना चाहिए उन फ़ाइलों को होना चाहिए जो अनुप्रयोग निष्पादन योग्य संकलित किए जाने पर बनाए गए थे। प्रतीक फ़ाइलों को भी स्थित होना चाहिए जहां डीबगर उन्हें ढूंढ सकता है।

• देशी अनुप्रयोगों के लिए प्रतीक फ़ाइलें विजुअल स्टूडियो होस्ट कंप्यूटर पर स्थित होनी चाहिए।

प्रबंधित अनुप्रयोगों के लिए प्रतीक फ़ाइलें दूरस्थ कंप्यूटर पर स्थित होनी चाहिए।

• मिश्रित (प्रबंधित और देशी) अनुप्रयोगों के लिए प्रतीक फ़ाइलें विजुअल स्टूडियो होस्ट कंप्यूटर और दूरस्थ कंप्यूटर दोनों पर स्थित होनी चाहिए।

सम्मान!

1

कस्टम निर्माण कॉन्फ़िगरेशन का उपयोग करते समय भी मैं इसमें भाग गया। > निर्माण - -> आउटपुट -> उन्नत सेटिंग और आउटपुट सुनिश्चित किया - (देव के बजाय डीबग)

इसे ठीक करने के लिए, मैं संशोधित प्रोजेक्ट गुण> डीबग जानकारी की स्थापना पूर्ण या था पीडीबी-केवल। डिफ़ॉल्ट रिलीज कॉन्फ़िगरेशन आमतौर पर पर सेट नहीं किया गया

0

उपकरण> विकल्प> Debugging-> प्रतीक और निष्पादन के लिए .pdb फ़ाइलें करने के लिए पथ को जोड़ने के लिए जाओ। मेरी स्थानीय मशीन पर पथ ठीक काम किया।

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