2011-11-03 15 views
10

मैं विजुअल स्टूडियो में सी # के साथ एक एएसपी.NET वेबसाइट डीबग कर रहा हूं। जब मैं ब्रेकपॉइंट (डीबग के दौरान) सेट करता हूं, समय के साथ, निर्मित ब्रेकपॉइंट कई बच्चे ब्रेकपॉइंट्स जमा करेगा। (here देखें।)
अब, कभी-कभी जब मैं लाल ग्लिफ पर क्लिक करके ब्रेकपॉइंट हटा देता हूं, तो अगली बार लाइन निष्पादित होने पर ब्रेकपॉइंट अभी भी मारा जाएगा, क्योंकि बच्चे के ब्रेकपॉइंट्स बने रहते हैं।बच्चे ब्रेकपॉइंट को अक्षम/हटाएं?

ब्रेकपॉइंट विंडो में ब्रेकपॉइंट को हटाने से समस्या हल हो जाएगी, लेकिन आपके पास कई सेट होने पर सही ब्रेकपॉइंट खोजने में परेशानी होती है। इसके अलावा, कई बच्चों के साथ ब्रेकपॉइंट हटाने को काफी धीमा ऑपरेशन है।

तो सवाल उठाने के लिए, क्या मैं इस बच्चे के ब्रेकपॉइंट्स के निर्माण को अक्षम कर सकता हूं, या क्या सभी बच्चों को जल्दी से हटाने का कोई तरीका है?
वैकल्पिक समाधान की सराहना की जाती है!


कृपया ध्यान दें कि यह इस का डुप्लिकेट नहीं है: Question on how to remove a Visual Studio Breakpoint, क्योंकि मैं पूछ रहा हूं कि बच्चे के ब्रेकपॉइंट्स से कैसे निपटें। (हालांकि हमारा इच्छित लक्ष्य वही है।)

+0

Mmmm, आप इतने यकीन क्यों हैं कि आपका प्रश्न डुप्लिकेट नहीं है? मुझे लगता है कि आपके जैसे सवाल पूछने का एक बेहतर विचार था। किसी भी मामले में, आपका उत्तर निश्चित रूप से [उस पोस्ट द्वारा ref'd माइक्रोसॉफ्ट कनेक्ट पेज] पर है (http://connect.microsoft.com/VisualStudio/feedback/details/391642/ स्थायी रूप से-remove-a-breakpoint-in- विजुअल-स्टूडियो-डी-डिबगिंग) – sq33G

+0

"बेहतर" इंगित करता है कि यह अलग है; इस प्रकार एक डुप्लिकेट नहीं। :) इसके अलावा, यदि यह प्रश्न अलग-अलग उत्तर उत्पन्न करेगा, तो क्या यह इसकी विशिष्टता को भी मान्य नहीं करेगा? –

+0

जब उत्तर हैं, तो हम बात करेंगे;) – sq33G

उत्तर

2

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

Sub RemoveChildBreakpoints() 
    Dim i As Integer 
    Dim len As Integer 
    Dim debugger As EnvDTE.Debugger = DTE.Debugger 
    Dim children As EnvDTE.Breakpoints 
    For Each bp As EnvDTE.Breakpoint In debugger.Breakpoints 
     children = bp.Children 
     len = children.Count 
     For i = len To 1 Step -1 
      children.Item(i).Delete() 
     Next 
    Next 
End Sub 

यदि आप कई breakpoints है अभी भी पागलपन की हद तक धीमी है, तो यह एक नियमित आधार पर यह चला सकता हूँ करने के लिए आप बच्चे को breakpoints के साथ कोई समस्या आ रही है, तो सबसे अच्छा है।

1

वर्तमान में चयनित लाइन पर ब्रेकपॉइंट को हटाने के लिए निम्न कोड का उपयोग मैक्रो के रूप में किया जा सकता है। (ध्यान दें कि दृश्य स्टूडियो स्वचालित रूप से हिट करता है एक ब्रेकपाइंट की लाइन का चयन करता है।)

Sub RemoveBreakPoint() 
    Dim debugger As EnvDTE.Debugger = DTE.Debugger 
    Dim children As EnvDTE.Breakpoints 
    Dim sel As Integer = DTE.ActiveDocument.Selection.ActivePoint.Line 
    For Each bp As EnvDTE.Breakpoint In debugger.Breakpoints 
     If bp.File <> DTE.ActiveDocument.FullName Then 
      Continue For 
     End If 
     For Each bpc As EnvDTE.Breakpoint In bp.Children 
      If bpc.FileLine = sel Then 
       bp.Delete() 
       Exit For 
      End If 
     Next 
    Next 
End Sub 

आसान पहुंच के लिए यह करने के लिए एक कुंजीपटल शॉर्टकट असाइन कर सकते हैं। (। उपकरण> विकल्प> पर्यावरण> कीबोर्ड)

1

यहाँ आधारित मैक्रो ऐड-इन (https://marketplace.visualstudio.com/items?itemName=VisualStudioPlatformTeam.MacrosforVisualStudio) नए जावास्क्रिप्ट सभी बच्चों को दूर करने के लिए एक अद्यतन मैक्रो है breakpoints:

/// <reference path="C:\Users\ERobishaw\AppData\Local\Microsoft\VisualStudio\14.0\Macros\dte.js" /> 
 
try { 
 

 
    var outputWindowPane = dte.Windows.Item("{34E76E81-EE4A-11D0-AE2E-00A0C90FFFC3}").Object.ActivePane; 
 
    outputWindowPane.Activate(); 
 
    outputWindowPane.OutputString("display this text in the output window panel\n"); 
 

 
    var i; 
 
    var len; 
 
    var dbgr = dte.Debugger; 
 
    var brk = dbgr.Breakpoints; 
 
    outputWindowPane.OutputString("There are " + brk.Count + " Total\n"); 
 
    //Macro.InsertText("There are " + brk.Count + " Total"); 
 
    for (var bpi = 1; bpi <= brk.Count; bpi++) { 
 
     outputWindowPane.OutputString("On " + bpi + " of " + brk.Count + "\n"); 
 
     var bp = brk.Item(bpi); 
 
     var children = bp.Children; 
 
     var len = children.Count; 
 
     
 
     for (var chi = len; chi > 0; chi--) { 
 
      outputWindowPane.OutputString(" Children Count = " + children.Count + "\n"); 
 
      children.Item(chi).Delete(); 
 
     } 
 
    } 
 
} 
 
catch (e) { 
 
    outputWindowPane.OutputString("Error\n"); 
 
    outputWindowPane.OutputString(e + "\n"); 
 
}