Visual Studio 2010 PDB फ़ाइलों को खोजने / खोलने में सक्षम क्यों नहीं है?


83

मैं वीएस 2010 में ओपनसीवी का उपयोग करने की कोशिश कर रहा हूं। मैं एक शौकिया हूं, और मैं ओपनसीवी विकी से पहला कदम सीख रहा हूं। हालाँकि, जब मैं अपने प्रोजेक्ट को डीबग करने की कोशिश कर रहा हूं, मुझे निम्नलिखित त्रुटियां मिलती हैं:

'C: \ Windows \ SysWOW64 \ ntdll.dll', PDB फ़ाइल को नहीं ढूँढ या खोल सकता है 'C: \ Windows \ SysWOW64 \ kernel32.dll', PDB फ़ाइल को 'C: \ Windows \ SysWOW64 \ kernellbase' नहीं ढूँढ या खोल सकता। dll ', PDB फ़ाइल को खोज या खोल नहीं सकता

मेरे पास उन फ़ाइलों को सही निर्देशिका में है, तो यह उन्हें क्यों नहीं खोल सकता है? समस्या को ठीक करने के लिए मुझे क्या करना चाहिए?


"सही निर्देशिका में" से आपका क्या अर्थ है? क्या PDB DLL के समान फ़ोल्डर में है?
हार्न

1
@harper: यह देखते हुए कि प्रश्न में पुस्तकालयों Windows सिस्टम फ़ाइलें हैं, PDBs शायद नहीं कर रहे हैं चाहिए DLL को उसी फ़ोल्डर में किया जाना है। DLL C: \ Windows \ SysWOW64 निर्देशिका में हैं, लेकिन PDB प्रतीक संभवतः आपके डिज़ाइन किए गए कैश निर्देशिका में होंगे। जिसे आप Visual Studio डीबग विकल्पों में निर्दिष्ट करते हैं।
कोड़ी ग्रे

@ कोडी ग्रे: क्या आप पीडीबी को निर्देशिका (मैन्युअल रूप से) में कॉपी कर सकते हैं या क्या आपको Microsoft (स्रोत) साइको सर्वर का उपयोग करने की आवश्यकता है?
हार्पर

@ हार्पर: मुझे नहीं पता कि यह उस तरह से काम करेगा। मुझे यकीन नहीं है कि अगर विजुअल स्टूडियो को वहां पीडीबी प्रतीक मिलेंगे (हालांकि मुझे लगता है कि यह होगा )। लेकिन, जहां तक ​​लाइसेंस जाता है, मुझे पूरा यकीन है कि आपको एमएस के सिंबल सर्वर का उपयोग करना होगा। आप PDB फाइलें कैसे प्राप्त कर सकते हैं? मुझे यकीन नहीं है कि आप इसका बहिष्कार क्यों करना चाहेंगे। विजुअल स्टूडियो में यह सारी कार्यक्षमता निर्मित है, तो क्यों न इसका लाभ उठाया जाए? यह प्रतीकों को स्थानीय रूप से कैश करने के लिए डिज़ाइन किया गया है, इसलिए आपको हर बार उन्हें फिर से डाउनलोड करने की आवश्यकता नहीं है। मैं इसे अब और नहीं देख रहा हूँ।
कोड़ी ग्रे

@ कोडी ग्रे: आई डोन्ट 'कुछ भी बहिष्कार करना चाहते हैं। मैं भी इन PDBs नहीं है। लेकिन मैं उत्सुक हूं कि यह कैसे काम करता है।
हार्पर

जवाबों:


124

पहले निम्नलिखित मापदंडों को बदलें:

उपकरण -> विकल्प -> डिबगिंग -> प्रतीक -> सर्वर -> हां

फिर Ctrl+ दबाएं F5और आपको आश्चर्यजनक चीजें दिखाई देंगी।


2
वाह! वह बहोत अच्छा था! इस उत्तर के लिए धन्यवाद। आपके लिए +1!
मैथ्यू क्रू

बस स्पष्ट होने के लिए, यह केवल एक बार प्रतीकों को डाउनलोड करेगा? यह मुझे ऑफ़लाइन काम करने से बिल्कुल भी नहीं रोकेगा?
Seanny123

1
क्या आप इसे डाउनलोड करने के लिए एक सीधा लिंक जानते हैं? मैं इंटरनेट एक्सेस के बिना बंद नेटवर्क में काम कर रहा हूं।
लेवकेस्टर

2
Euhm ... नियंत्रण F5 डिबगर AFAIK को संलग्न नहीं करता है। तो यह उत्तर बिंदु याद आ रहा है।
बकली

1
आपने जैसा कहा था मैंने वैसा ही किया। लेकिन अब यह दिखा रहा है कि कुछ प्रतीक लोड किए गए हैं, जबकि अन्य पीडीबी फ़ाइल के बाकी हिस्सों को नहीं जोड़ा गया है
हेमंत परिहार

20

मुझे पूरा यकीन है कि वे चेतावनी हैं , त्रुटियां नहीं। आपका प्रोजेक्ट अभी भी ठीक चलना चाहिए।

हालांकि, चूंकि आपको हमेशा संकलक चेतावनी को ठीक करने का प्रयास करना चाहिए, आइए देखें कि हम क्या खोज सकते हैं। मैं OpenCV से बिल्कुल भी परिचित नहीं हूं, और आप उस विकी ट्यूटोरियल से लिंक नहीं करते हैं जिसका आप अनुसरण कर रहे हैं। लेकिन यह मेरे लिए समस्या की तरह लग रहा है कि आप विंडोज के 64-बिट संस्करण चला रहे हैं (जैसा कि DLL फ़ाइलों के लिए पथ में "SysWOW64" फ़ोल्डर द्वारा दर्शाया गया है), लेकिन आपके द्वारा प्रयास किया जा रहा OpenCV सामान बनाया गया है एक 32-बिट प्लेटफ़ॉर्म के लिए। इसलिए आपको सीएमके का उपयोग करके परियोजना को फिर से बनाने की आवश्यकता हो सकती है, जैसा कि यहां बताया गया है

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


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

किसी कारण से मेरा पूरा संदेश चिपकाया नहीं गया। लेकिन तब से मैंने इसे निम्नलिखित विधि का उपयोग करके तय किया है। stackoverflow.com/questions/1468726/…
daveomcd

10

विजुअल स्टूडियो कम्युनिटी एडिशन 2015

पूरे दिन यह त्रुटि रही। मैंने आखिरकार टूल्स> इम्पोर्ट एंड एक्सपोर्ट सेटिंग्स> सभी विकल्पों को रीसेट करें> जनरल सेटिंग्स पर जाकर इसे ठीक किया।

एक बार जब यह रीसेट हो जाता है तो उपकरण> विकल्प> डिबगिंग> सिंबल> - फिर Microsoft प्रतीक सर्वर के बगल में स्थित बॉक्स को चेक करें।

अपने ऐप को डिबग मोड में चलाएं, और यह विंडोज़ को यह कहते हुए खोल देगा कि यह विभिन्न .dll फ़ाइलों के एक समूह के लिए प्रतीक डाउनलोड कर रहा है। इसे पूरा करने दें।

एक बार जब यह पूरा हो जाता है, तो इसे फिर से काम करना चाहिए।


3

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


1

पहले थ्रेड / एक अन्य संभावना का जिक्र करते हुए वीएस कैंट ओपन या प्रक्रिया की पीडीबी फाइल ढूंढते हैं, जब आपके पास बैकग्राउंड में आपका एक्जीक्यूबल चल रहा हो। मैं mpiexec के साथ काम कर रहा था और इस मुद्दे में भाग गया। हमेशा अपने कार्य प्रबंधक की जाँच करें और किसी भी निष्पादन प्रक्रिया को मारें जो आपके प्रोजेक्ट में बनने जा रही है। एक बार जब मैंने ऐसा किया, तो यह डिबग किया या ठीक बनाया।

इसके अलावा, यदि आप चेतावनी के साथ जारी रखने का प्रयास करते हैं, तो ब्रेकप्वाइंट नहीं मारा जाएगा और इसमें वर्तमान निष्पादन योग्य नहीं होगा


1

के लिए VS2013 जो खुद को यहाँ मिल के रूप में मैंने किया था उन:

Tools -> Options -> Debugging -> Symbols

आप देखेंगे कि Cache symbols in this directory:मैदान खाली है; आप या तो स्वयं पथ ब्राउज़ कर सकते हैं / दर्ज कर सकते हैं या बस आगे बढ़ सकते हैं और Load all symbolsबटन पर क्लिक कर सकते हैं । एक चेतावनी विंडो यह कहते हुए दिखाई देगी कि "चूंकि आपने प्रतीक-कैश निर्देशिका का चयन नहीं किया है, इसलिए डिफ़ॉल्ट का उपयोग किया जाएगा"। अब आप C:\Users\XXXX\AppData\Local\Temp\SymbolCacheपहले वाले खाली पथ-क्षेत्र में देखेंगे । Load all symbolsदूसरी बार क्लिक करें और आपको सेट होना चाहिए। ठीक मारो, और सिर्फ परिश्रम के लिए, अपने समाधान को साफ और पुनर्निर्माण करें।


0

मैंने पाया है कि ये त्रुटियां कभी-कभी किसी परियोजना को संकलित करते समय अनुमतियों की कमी से होती हैं - इसलिए मैं इसे ठीक से काम करने के लिए प्रशासक के रूप में चलाता हूं।


0

मैं एक ही चेतावनी दे रहा हूँ। मुझे यकीन नहीं है कि यह 32 बनाम 64 बिट्स की बात है। बस नए प्रतीकों को लोड किया और कुछ समस्याओं को हल किया गया था, लेकिन OpenCV के बारे में अभी भी बनी हुई है। यह हल बनाम अनसुलझी समस्या के साथ आउटपुट का एक उद्धरण है:

'OpenCV_helloworld.exe': भरी हुई 'C: \ OpenCV2.2 \ bin \ opencv_imgproc220d.dll', PDB फ़ाइल को नहीं ढूँढ या खोल सकता

'OpenCV_helloworld.exe': लोड किया गया 'C: \ WINDOWS \ system32 \ imm32.dll', प्रतीक लोड किए गए (स्रोत की जानकारी छीन ली गई)।

यदि कोई पूछेगा तो कोड 0 से बाहर निकल रहा है।

प्रोग्राम '[4424] OpenCV_helloworld.exe: नेटिव' कोड 0 (0x0) के साथ बाहर हो गया है।


0

मुझे भी यही समस्या थी। डीबगिंग उस सामान के साथ काम नहीं करता है जो ओपनसीवी निष्पादन योग्य के साथ आता है। आपको अपने खुद के बाइनरी का निर्माण करना होगा।
फिर डिबग-> विकल्पों और सेटिंग्स-> डीबग-> प्रतीकों में Microsoft प्रतीक सर्वर सक्षम करें


0

मैं उसी मुद्दे में भाग गया। जब मैंने C ++ कोड पर अपना यूनिट टेस्ट चलाया, तो मुझे एक त्रुटि मिली, जिसमें कहा गया था कि "PDB फ़ाइल को नहीं ढूँढ या खोल सकता है"।

लॉग्स

जब मैंने Visual Studio में आउटपुट लॉग देखा, तो मैंने देखा कि यह गलत फ़ोल्डर में दिख रहा था। मैंने WinUnit फ़ोल्डर का नाम बदल दिया था, लेकिन WinUnit कोड में कुछ पुराने फ़ोल्डर नाम का उपयोग करके PDB फ़ाइल की तलाश कर रहा था। मुझे लगता है कि उन्होंने इसे हार्ड-कोड किया है।

समस्या मिली

जब मैंने पहली बार WinUnit फ़ाइलों को डाउनलोड और अनज़िप किया, तो मुख्य फ़ोल्डर को "WinUnit-1.2.0909.1" कहा गया। फ़ाइल को अनज़िप करने के बाद, मैंने फ़ोल्डर का नाम बदलकर "WinUnit" कर दिया क्योंकि विज़ुअल स्टूडियो प्रोजेक्ट सेटअप के दौरान टाइप करना आसान है। लेकिन जाहिरा तौर पर इसने PDB फ़ाइल खोजने की क्षमता को तोड़ दिया, भले ही मैंने WinUnit प्रलेखन के अनुसार सब कुछ सेटअप किया हो।

मेरा फिक्स

मैंने फ़ोल्डर का नाम वापस मूल में बदल दिया, और यह काम करता है।

अजीब।


0

यहाँ एक ही समस्या थी, लेकिन एक अलग समाधान काम किया।

सबसे पहले, मैंने निम्नलिखित कोशिश की, जिनमें से कोई भी काम नहीं किया:

  1. सिनेमेटो द्वारा सुझाए गए प्रतीकों को लोड करें

  2. PresentationFramework और PresentationCore के संदर्भ निकालें / जोड़ें

  3. सिस्टम को पुनरारंभ करें

इसका समाधान मेरे कोड में किए गए पिछले कुछ परिवर्तनों को पूर्ववत करना था। मैंने जांच और अनियंत्रित घटनाओं के लिए बस कुछ रेडियो बटन और इवेंट हैंडलर जोड़े थे। मेरे हाल के बदलावों को हटाने के बाद सब कुछ संकलित। मैंने तब अपने सटीक बदलावों को वापस जोड़ा और सब कुछ ठीक से संकलित किया। मुझे समझ में नहीं आता कि यह क्यों काम किया - केवल एक चीज जिसके बारे में मैं सोच सकता हूं वह है मेरा वीएस सॉल्यूशन। वैसे भी, यदि कोई अन्य सुझाव काम नहीं करता है, तो आप अपने सबसे हाल के परिवर्तनों को वापस करने की कोशिश कर सकते हैं। ध्यान दें: यदि आप Visual Studio को बंद करते हैं और खोलते हैं तो आपका पूर्ववत इतिहास खो जाता है .. इसलिए आप VS को बंद करने से पहले यह कोशिश कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.