2015-06-11 3 views
7

पर गलत तरीके से कॉपी करें I अब मैंने यह प्रश्न सीधे माइक्रोसॉफ्ट here, here और here के साथ उठाया है। जाहिर है कि समस्या अभी भी वीएस2015 के लिए मौजूदा आरसी में उभरती है (ऊपर दूसरा लिंक देखें)।विजुअल स्टूडियो 2013 सी ++ घड़ी विंडो: क्लिपबोर्ड

विजुअल स्टूडियो 2013 में यह पी की तरह एक घड़ी का उपयोग एक सी सरणी के अनेक तत्वों को देखने के लिए संभव है, 10000 (जहां पी उदाहरण के लिए एक डबल * है)।

नीचे दिए गए उदाहरण में मैं घड़ी खिड़की में दिखाई देने वाले सरणी के हिस्से का एक स्क्रीनशॉट दिखाता हूं और सरणी के उसी भाग को CTRL-C कॉपी किया गया है और CTRL-V एक टेक्स्ट एडिटर में चिपकाया गया है। ध्यान दें कि तत्व 25 से बाद में प्रतिलिपि/चिपकाए गए मान घड़ी विंडो में मौजूद नहीं हैं (जो सही हैं)।

Watch window

[20] 1.0945579725021715 double 
    [21] 0.99979213435791758 double 
    [22] 1.0971002689671798 double 
    [23] 0.99977802981060826 double 
    [24] 1.1002739126009620 double 
    [25] 0.99964664435140704 double 
    [26] 1.1054689877466559 double 
    [27] 0.99963245464284955 double 
    [28] 1.1002149405804762 double 
    [29] 0.99961125488418856 double 
    [30] 1.0956742333763470 double 

तो मेरी प्रयोगों में जहाँ तक मुझे पहले कुछ मूल्यों को देखने के लिए जाते हैं और पिछले कुछ मूल्यों को सही ढंग से सरणी जो गलत है के एक मध्यम खंड छोड़ने कॉपी कर रहे हैं। यह हमेशा गलत नहीं होता है। अक्सर यह पहली सरणी के लिए काम करता है लेकिन बाद वाले लोगों के लिए गलत हो जाता है। साथ ही जब यह गलत हो जाता है तो ऐसा लगता है कि मूल्यों को कॉपी/पेस्ट करना दूसरी बार कभी-कभी सही परिणाम की ओर जाता है। ऐसा प्रतीत होता है कि गलत संख्याएं आमतौर पर सरणी के कुछ तत्वों के पिछले मान हैं - क्लिपबोर्ड पर प्रतिलिपि बनाई गई है सरणी की वर्तमान और पिछली सामग्री का मिश्रण है। जिन एरे मैं इसे देख रहा हूं वे 2000-प्लस तत्व लंबे हैं।

यह एक गलत तरीके से-अवैध (अर्थात कभी कभी केवल आंशिक रूप से अद्यतन) डेटा की प्रतिलिपि के विचारोत्तेजक क्लिपबोर्ड में नकल का दृश्य स्टूडियो के क्रियान्वयन में इस्तेमाल किया जा रहा है। मेरे प्रयोगों दृढ़ता से सुझाव है कि क्लिपबोर्ड को प्रदान की गई डेटा की प्रतिलिपि में तत्वों यदि और केवल यदि उन तत्वों अपडेट किया जाता है (या पर्याप्त रूप से "आस-पास" तत्वों - ऐसा लगता है कि वहाँ एक "पेजिंग ब्लॉक आकार" शामिल हो सकता है), स्क्रीन पर दिखाया गया है । सरणी के माध्यम से विशेष रूप से स्क्रॉल में एक समय में एक पृष्ठ सही तरीके से काम करने के लिए कॉपी करने का कारण है, जबकि यह की तह तक सरणी के ऊपर से flicking घर का उपयोग कर और END कुंजी सरणी के बीच खंड में अपडेट किया जा रहा करने के लिए नेतृत्व नहीं करता है लगता है प्रतिलिपि जो क्लिपबोर्ड पर प्रस्तुत की जाती है।

वास्तव में अगर एक ही सरणी पर एक से अधिक घड़ियों सेट एक से अधिक उत्तर प्राप्त कर सकते हैं, उदाहरण इस डेटा एक ही ब्रेकप्वाइंट तीन बार मारने के बाद को क्लिपबोर्ड पर कॉपी है। ब्रेकपॉइंट पहली बार मारा गया है, मैं सभी डेटा कॉपी करता हूं और यह सब क्लिपबोर्ड पर सही ढंग से कॉपी हो जाता है। दूसरी बार पैची है। महत्वपूर्ण रूप से मैंने घड़ी खिड़की के माध्यम से लगभग 25% रास्ते नीचे स्क्रॉल किया, क्लिपबोर्ड पर समाप्त होने वाले पीले डेटा को इंजेक्ट करने के लिए पर्याप्त। मैं फिर घड़ी की खिड़की की शुरुआत में लौट आया और तीसरे बार ब्रेकपॉइंट हिट होने तक निरंतर निष्पादन जारी रहा। मैंने फिर घड़ी विंडो में सभी डेटा चुने और CTRL-A CTRL-C का उपयोग करके इसे कॉपी किया। नतीजा यह है कि गुलाबी रंग का डेटा पहली बार ब्रेकपॉइंट मारा गया था। पीले रंग का डेटा दूसरी बार से है और असीमित डेटा वास्तव में सही है। ध्यान दें कि गुलाबी डेटा के तत्व 0 और 1 भी उनके ऊपर सरणी के सारांश के साथ लाइन से बाहर हैं! मैंने ब्रेवटी के लिए 2-497 और 503-997 तत्व छोड़े हैं।

Multiple watches

6 के बाद मैं पहले नहीं देखा है इस तरह के व्यवहार से इस्तेमाल किया करने के बाद विभिन्न कुलपति ++ संस्करणों और नहीं किया है तुरंत इसे वेब पर के लिए एक संदर्भ को खोजने के लिए सक्षम किया गया।

एक जब डिबगिंग कुछ जटिल एक के बाद एक के सिर खरोंच कर सकते हैं साकार एक गुमराह किया जा रहा है इससे पहले कि उम्र के लिए अजीब संख्या के बारे में सोच इस कार्यक्षमता पर भरोसा किया जाता है।

मैं माइक्रोसॉफ्ट विजुअल स्टूडियो व्यावसायिक 2013 का उपयोग कर रहा, संस्करण 12.0.31101.00 अद्यतन 4.

किसी और यह देखा गया है और किसी को भी इसके बारे में अधिक जानते हैं या एक फिक्स या इसके लिए वैकल्पिक हल के बारे में पता है?

उत्तर

0

विभिन्न सहयोगियों को यह भी दिखाई देता है। जाहिर है यह विजुअल स्टूडियो 2015 संस्करणों को भी प्रभावित करता है।

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

घड़ी की खिड़की में सभी डेटा को स्क्रॉल करना एक कामकाज है जिसे कॉपी करने से पहले कॉपी करना चाहते हैं। दिखाया गया है कि दिखाया गया है कि अपडेट किया गया है लेकिन जो दिखाया नहीं गया है वह उस समय तक अद्यतित नहीं है जब डेटा डेटा कॉपी करता है।

अद्यतन (फरवरी 2018)

अब नीचे सरल रेप्रो विजुअल स्टूडियो 2017 में ठीक से काम करता तो यह, बग की तरह लग रहा है तय हो गई है, हालांकि प्रति चरण aeons लेता है और एक पॉप-अप विंडो प्रकट होता है, जबकि क्लिपबोर्ड पर पाठ की 10000 लाइनें बनाई गई हैं। यह अधिक विजुअल स्टूडियो 2010 तक और सही ढंग से (और सही ढंग से काम किया गया) था।

a पर एक घड़ी देखें और इसे विस्तृत करें। Ctrl-A, Ctrl-C का अर्थ घड़ी विंडो में सबकुछ चुनें और कॉपी करें।

int a[10000]; 
for (int i=0; i<10000; ++i) 
    a[i] = i; 

(void)a[0]; // breakpoint here, Ctrl-A, Ctrl-C, paste somewhere 

for (int i=0; i<10000; ++i) 
    a[i] += 100; 

(void)a[0]; // breakpoint here, Ctrl-A, Ctrl-C, paste somewhere 

विजुअल स्टूडियो 2013 और 2015 आप इस

-  a 0x00ef5af4 {100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, ...} int[10000] 
     [0] 100 int 
     [1] 101 int 
     [2] 102 int 
     [3] 103 int 
     [4] 104 int 
     [5] 105 int 
     [6] 106 int 
     [7] 107 int 
     [8] 108 int 
     [9] 109 int 
     [10] 110 int 
     [11] 11 int // Oops. The line it goes wrong on depends 
     [12] 12 int // on the number of visible lines in the 
     [13] 13 int // watch window. 
... 
की तरह कुछ दे देंगे
संबंधित मुद्दे