2009-03-09 11 views
27

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

मैं बिना किसी चरण के फ़ंक्शन कॉल में कदम उठाने का कोई तरीका ढूंढ रहा हूं, उदाहरण के लिए, एक एसटीएल स्ट्रिंग कास्ट ऑपरेटर क्योंकि फंक्शन के पैरामीटर में से एक में char * से स्ट्रिंग में एक अंतर्निहित रूपांतरण होता है ।

उत्तर

19

मुझे यह blog entry मिला है जिसमें एक समाधान है। हालांकि मैं यह कहने में सक्षम होना चाहूंगा कि "इस परियोजना का हिस्सा नहीं है जो कुछ भी कदम न करें", यह काम करने योग्य दिखता है।

संपादित करें:

 
32 bit Windows 
    \\HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\8.0\NativeDE\StepOver 
64 bit Windows 
    \\HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\8.0\NativeDE\StepOver 
: कुछ ब्लॉग और समाचार समूह को देखने के बाद, विधि प्रत्येक कार्य है कि आप (2005 कल्पना करते हुए) इस रजिस्ट्री कुंजी के अंतर्गत में कदम नहीं करना चाहती के लिए एक प्रविष्टि जोड़ने के लिए है पथ के लिए

संस्करण संख्या:

 
Visual Studio 2005: 8.0 
Visual Studio 2008: 9.0 
Visual Studio 2010: 10.0 
Visual Studio 2012: 11.0 
Visual Studio 2013: 12.0 

यह कुंजी नियम जो प्रभावित करने के तरीके स्टेपिंग किया जाता है का एक सेट होता। प्रत्येक नियम को एक अलग प्रविष्टि के रूप में निर्दिष्ट किया जाता है जिसका नाम दशमलव संख्या है और जिसका मान फ़ंक्शन नाम पैटर्न है जो निर्दिष्ट करता है कि हम कौन से फ़ंक्शंस को प्रभावित करना चाहते हैं। जैसे

 
    "10" = "boost\:\:scoped_ptr.*\:\:.*=NoStepInto" 

बूस्ट :: scoped_ptr फ़ंक्शंस में कदम उठाने से रोकता है।

नियमों का मूल्यांकन उच्च से निम्न मानों से किया जाता है जब तक कोई मिलान पैटर्न नहीं मिलता है, या कोई नियम शेष नहीं है। उस मामले में समारोह में कदम रखा गया है।

फ़ंक्शन नाम नियमित अभिव्यक्तियां हैं।

कॉलन को बैकस्लैश के साथ उद्धृत करने की आवश्यकता है।

आप StepInto के साथ-साथ NoStepInto निर्दिष्ट कर सकते हैं। यह आपको एक ही दायरे/नामस्थान में कुछ कार्यों के अलावा सभी में कदम उठाने से बचने का एक तरीका देता है।

रजिस्ट्री में परिवर्तन लेने के लिए विजुअल स्टूडियो को पुनरारंभ करें।

+3

हालांकि विजुअल स्टूडियो 2012, 2013 उपरोक्त विवरण में सूचीबद्ध हैं, रजिस्ट्री अब और नहीं किया जाता। Default.natstepfilter को अपडेट करने के तरीके के विवरण के लिए ब्लॉग एंट्री लिंक का पालन करें। –

+0

मुझे लगता है कि रजिस्ट्री का उपयोग वीएस 2012 और 2013 में किया जाता है जब आप संपादित करें और जारी रखें। –

4

मेरे प्रति पास्ट:

बचना हालात

में कदम यह अक्सर कंस्ट्रक्टर्स या अतिभारित ऑपरेटरों की तरह कुछ सामान्य कोड में कदम से बचने के लिए उपयोगी है। autoexp.dat यह क्षमता प्रदान करता है। "[निष्पादन नियंत्रण]" नामक एक अनुभाग जोड़ें। कुंजी जोड़ें जहां कुंजी फ़ंक्शन का नाम है और मान "NoStepInto" है। एक तारांकन (*) को वाइल्डकार्ड के रूप में नामस्थान या कक्षा के लिए कॉलन के पहले सेट के रूप में निर्दिष्ट कर सकते हैं।

autoexp.dat केवल विजुअल स्टूडियो की शुरुआत पर पढ़ा जाता है।

[ExecutionControl]

myfunctionname = NoStepInto

CFoo :: * = NoStepInto

निर्माण की अनदेखी करने के लिए:

समारोह myfunctionname, और वर्ग CFoo के लिए सभी कॉल की अनदेखी करने के लिए और एमएफसी सीएसट्रिंग्स के असाइनमेंट: (CSTring :: ऑपरेटर = में अतिरिक्त = पर ध्यान दें।)

[ExecutionControl]

cstring :: cstring = NoStepInto

cstring :: ऑपरेटर == NoStepInto

सभी ATL उपेक्षा करने के लिए कहता है:

[ExecutionControl]

ATL: : * = NoStepInto

टी से उसका (http://www.highprogrammer.com/alan/windev/visualstudio.html) लेख।

इसके अलावा आप छात्र मेनू से "विशिष्ट कार्य में चरण" का उपयोग कर सकते हैं।

संपादित करें क्षमा करें, ऐसा लगता है कि autoexp.dat बनाम 2003/2005 में काम नहीं करता है। वही आप रजिस्ट्री सेटिंग्स के साथ कर सकते हैं। http://groups.google.com/group/microsoft.public.vsnet.debugging/browse_thread/thread/b03dee5a626470c0/26addb1b539883e8

+0

यह AUTOEXP की तरह दिखता है।डेटा फ़ाइल केवल विजुअल स्टूडियो 6 में समर्थित है। नए संस्करण रजिस्ट्री प्रविष्टियों का उपयोग करते हैं। – Ferruccio

+0

धन्यवाद। मैंने अपनी पोस्ट संपादित की है। – bayda

2

वीएस 6 आपको ऑटोएक्सपी फ़ाइल में मान परिभाषित करने देता था जो आपको सामान्य कार्यों (जैसे स्ट्रिंग कंस्ट्रक्टर) में कदम उठाने देता है। वीएस 7 के साथ शुरू करने से इन बहिष्करण रजिस्ट्री में ले जाया गया था। उपयोग की आसानी एक गंभीर हिट लेता है।

वीएस 7 और उच्च माइक्रोसॉफ्ट में, उनके ज्ञान में, इन बहिष्कारों को रजिस्ट्री में ले जाया गया। यहां कुछ उदाहरण दिए गए हैं:

Windows Registry Editor Version 5.00 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\NativeDE\StepOver] 
"10"="CString\\:\\:CString=NoStepInto" 
"11"=".*\\.c_str.*=NoStepInto" 

मुख्य नाम खोज आदेश का प्रतिनिधित्व करते हैं। प्रमुख मानों में खोज के लिए वीएस नियमित अभिव्यक्तियां होती हैं।

यदि आप अपना खुद का बहिष्कार बनाते हैं, तो डिस्सेप्लिब्स व्यू से नाम प्राप्त करना सुनिश्चित करें। स्रोत में घोषणा संकलक उत्पन्न नाम से मेल नहीं खाती है, खासकर टेम्पलेट किए गए कार्यों के लिए।

4

संदर्भ मेनू पर "विशिष्ट में विशिष्ट" प्रविष्टि भी है, जो मौजूदा पंक्ति पर कदम उठाए जा सकने वाले कार्यों को सूचीबद्ध करेगी, और आप जो चाहें उसे चुन सकते हैं।

+0

धन्यवाद। मैंने कभी यह नहीं देखा। – Ferruccio

4

विजुअल स्टूडियो 2012 से, निम्न फ़ाइल पर एक नज़र डालें:

C:\Program Files[ (x86)]\Microsoft Visual Studio 11.0\Common7\Packages\Debugger\Visualizers\default.natstepfilter

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

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