मेरे पास कक्षा में 40-50 विधियां हैं, मैं उन सभी को ब्रेकपॉइंट जोड़ना चाहता हूं। क्या मैं उन सभी को ब्रेकपॉइंट्स एक बार में जोड़ सकता हूं?क्या मैं विजुअल स्टूडियो में एक बार कक्षा में सभी विधियों के लिए ब्रेकपॉइंट्स सेट कर सकता हूं?
उत्तर
वहाँ कोई एडऑन कम विधि यहाँ वर्णित है: How to set a breakpoint on a C++ class in the Visual Studio Debugger
संक्षेप में, आप समारोह क्षेत्र के लिए ClassName::*
में Ctrl + बी और प्रकार का उपयोग करके "नया ब्रेकप्वाइंट" संवाद को लाने कर सकते हैं। फिर आप उनमें से कुछ को ब्रेकपॉइंट विंडो में अक्षम कर सकते हैं।
एक class breakpoint add-in है जो आप कोशिश कर सकते हैं, या आप प्रत्येक विधि की शुरुआत में __debugbreak()
जोड़ने के लिए replace expression का उपयोग कर सकते हैं।
यहाँ अपने मैक्रो है, लेकिन यह 1000 से अधिक कार्यों पर breakpoints सेट करने के लिए कुछ समय लगता है ... और यह दृश्य स्टूडियो धीमी हो जाएगी!
Sub BreakAtEveryFunction()
For Each project In DTE.Solution.Projects
SetBreakpointOnEveryFunction(project)
Next project
End Sub
' Macro editor
Sub SetBreakpointOnEveryFunction(ByVal project As Project)
Dim cm = project.CodeModel
' Look for all the namespaces and classes in the
' project.
Dim list As List(Of CodeFunction)
list = New List(Of CodeFunction)
Dim ce As CodeElement
For Each ce In cm.CodeElements
If (TypeOf ce Is CodeNamespace) Or (TypeOf ce Is CodeClass) Then
' Determine whether that namespace or class
' contains other classes.
GetClass(ce, list)
End If
Next
For Each cf As CodeFunction In list
DTE.Debugger.Breakpoints.Add(cf.FullName)
Next
End Sub
Sub GetClass(ByVal ct As CodeElement, ByRef list As List(Of CodeFunction))
' Determine whether there are nested namespaces or classes that
' might contain other classes.
Dim aspace As CodeNamespace
Dim ce As CodeElement
Dim cn As CodeNamespace
Dim cc As CodeClass
Dim elements As CodeElements
If (TypeOf ct Is CodeNamespace) Then
cn = CType(ct, CodeNamespace)
elements = cn.Members
Else
cc = CType(ct, CodeClass)
elements = cc.Members
End If
Try
For Each ce In elements
If (TypeOf ce Is CodeNamespace) Or (TypeOf ce Is CodeClass) Then
GetClass(ce, list)
End If
If (TypeOf ce Is CodeFunction) Then
list.Add(ce)
End If
Next
Catch
End Try
End Sub
इस स्क्रिप्ट को वीएस 2012 में काम करने के लिए आप एक नए एडिन प्रोजेक्ट में फ़ंक्शंस में प्रतिलिपि बना सकते हैं और एडिन प्रोजेक्ट के "ऑनकनेक्शन" विधि के अंदर "BreakAtEveryFunction" को कॉल कर सकते हैं। स्क्रिप्ट थोड़ा सा व्यापक है जिसमें यह .NET विधियों को भी करता है, यहां और वहां त्रुटियां भी होती हैं, एडिन प्रोजेक्ट "डीटीई.डेबगर" और "डीटीई। क्रॉल्यूशन.प्रोजेक्ट्स" के बारे में शिकायत करेगा, "डीटीई" को "_applicationObject" में बदल देगा । के लिए ऐड परियोजना के बारे में और अधिक देखने [यह जवाब।] (Http://stackoverflow.com/questions/12027485/alternative-to-macros-in-visual-studio-2012/12394986#12394986) – goamn
स्वीकार किए गए उत्तर किसी कारण से मेरे लिए काम नहीं करते थे। और मुझे नहीं लगता कि मेरा कामकाज विजुअल स्टूडियो 2010 पर लागू होता है। लेकिन मैंने ऐसा करने के लिए अपने विजुअल स्टूडियो 2015 के साथ Macros for Visual Studio एक्सटेंशन का उपयोग किया।
कदम:
- ढूँढें (Ctrl +एफ) तरीके के उद्घाटन ब्रेस के लिए सही खरोज। आम तौर पर यह आपके द्वारा बनाई गई सेटिंग्स के आधार पर 8 सफेद रिक्त स्थान (या 2 टैब इत्यादि) होता है।
- इसे एक उद्घाटन ब्रेस
{
के साथ संलग्न करें। - यह सुनिश्चित करने के लिए कि यह किसी नेस्टेड ब्रेसिज़ से मेल नहीं खाता है,
\r\n
के साथ इसे तैयार करें। अब यह\r\n {
जैसा दिख सकता है। साथ ही, नियमित अभिव्यक्ति खोज चालू करें (खोज संवाद पर*
दबाकर)। - एक मैक्रो रिकॉर्ड करना प्रारंभ करें।
- F3 दबाएं और फिर ब्रेकपॉइंट जोड़ने के लिए F9 दबाएं। यह चाल का उपयोग कर पाए गए पहले विधि में ब्रेकपॉइंट जोड़ता है।
- मैक्रो रिकॉर्डिंग बंद करो। आपके पास होने वाली विधि की संख्या के लिए इसे चलाएं।
- सावधानी: जब आप अंत तक पहुंचते हैं तो जागरूक रहें। अन्यथा यह शीर्ष से फिर से शुरू होगा और आपके द्वारा अभी जोड़े गए ब्रेकपॉइंट्स को हटाना शुरू कर देगा।
मुझे पता है कि यह किसी भ्रम में है।
क्या आप कृपया अपने उत्तर के दूसरे भाग पर विस्तृत जानकारी दे सकते हैं? – goamn