2011-11-03 4 views
10

私はVisual StudioでC#を使用してASP.NET Webサイトをデバッグしています。ブレークポイント(デバッグ時)を設定すると、時間の経過とともに、作成されたブレークポイントには多くの子ブレークポイントが累積されます。 (hereを参照してください)
赤いグリフをクリックしてブレークポイントを削除すると、次回の実行時にブレークポイントがヒットすることがあります。これは、子ブレークポイントが維持されているためです。子ブレークポイントを無効/削除しますか?

ブレークポイントウィンドウでブレークポイントを削除すると問題は解決しますが、多くの設定があると正しいブレークポイントを見つけるのは面倒です。また、多くの子を持つブレークポイントの削除は、かなり遅い操作です。

質問に答えるには、この子ブレークポイントの作成を無効にすることができますか、すべての子をすばやく削除する方法はありますか?
他の解決方法があります。


私は子供のブレークポイントを扱う方法を尋ねているので、これはこれと重複していません。Question on how to remove a Visual Studio Breakpointです。 (目的は同じですが)

+0

うーんは、なぜあなたの質問は重複していないと確信していますか?私はあなたにちょうど質問をする方法の良いアイデアがあったように思えます。いずれにしても、あなたの答えは間違いなく[Microsoft Connectのページはその投稿で参照されました](http://connect.microsoft.com/VisualStudio/feedback/details/391642/permanently-remove-a-breakpoint-in-デバッグ中のビジュアルスタジオ) – sq33G

+0

"Better"はそれが異なることを示します。重複するものではありません。 :) また、この質問によって異なる回答が生成される場合は、その一意性も検証されませんか? –

+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 

あなたは多くのブレークポイントを持っている場合、それはまだめちゃくちゃ遅いですので、それはあなたが子供のブレークポイントで問題を抱えている場合は、定期的にそれを実行しないことをお勧めします。

1

次のコードは、現在選択されている行のブレークポイントを削除するマクロとして使用できます。 (それがヒットしたときにVisual Studioが自動的にブレークポイントの行を選択することに注意してください。)

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)すべての子を削除するには、ブレークポイントをベースにした新しいjavascriptのための更新されたマクロです:

/// <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"); 
 
}

関連する問題