2010-10-22 8 views
7

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

उत्तर

5

इसका मतलब है कि डीबगर इसका मूल्य नहीं समझ सकता है।

उदाहरण के लिए, यदि आपके कोड में HWND एस शामिल है, तो आप इसे थोड़ा सा देखते हैं।

struct HWND__{int unused;}; typedef struct HWND__ *HWND; 

तो HWND के प्रकार वास्तव में प्रकार "एक HWND__ सूचक" है: आप Windows हेडर फाइल के माध्यम से देखते हैं, तो यह एक मैक्रो के माध्यम से इस तरह परिभाषित किया है। हालांकि, HWND मान आपको CreateWindow() जैसे कार्यों से प्राप्त होते हैं, वास्तव में कुछ भी इंगित नहीं करते हैं।

लेकिन डिबगर struct में unused सदस्य का मान यह पता लगाने की कोशिश करेंगे, लेकिन यह ऐसा नहीं कर सकते:

Watch Window

आप त्रुटियों के इन प्रकार जब देखा चर देखेंगे खराब या गायब प्रकार की जानकारी है।

+0

सत्य नहीं है। ??? त्रुटि स्ट्रिंग खराब प्रकार की जानकारी से संबंधित है। यदि यह अभिव्यक्ति का मूल्यांकन नहीं कर सकता है तो यह एक और उपयोगी त्रुटि संदेश प्रदान करेगा – JaredPar

+0

@ जेरेडपायर: मेरा शब्द थोड़ा सा है। मेरा मतलब था कि डीबगर इसका मूल्य नहीं समझ सकता है। –

+0

गोचा। संपादित संस्करण ने भ्रम को मंजूरी दे दी। लेकिन यह प्रदर्शित करता है ??? खराब प्रकार और बुरे मूल्यों के लिए। – JaredPar

1

क्या यह एक सी ++ शैली परियोजना है?

डीबगर आमतौर पर "???" का उपयोग करता है स्ट्रिंग जब यह अभिव्यक्ति का मूल्यांकन करने में सक्षम है लेकिन प्रदर्शन के एक विशिष्ट भाग के लिए किसी भी प्रकार की जानकारी प्राप्त करने में असमर्थ है। यह आम तौर पर गायब या गलत पीडीबी प्रतीकों के कारण होता है।

अभिव्यक्ति दूषित डेटा (ओवरराइट वर्चुअल टेबल या आरटीटीआई) तक पहुंचने पर ऐसा होने का एक तरीका है। लेकिन अगर यह सच है तो मुझे 100% पता नहीं है।

1

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

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