2012-07-24 20 views

答えて

16

:要するに How to set a breakpoint on a C++ class in the Visual Studio Debugger

が、あなたは、機能分野へClassName::*にCTRL + Bとタイプを押して「新規ブレークポイント」ダイアログを表示することができます。 その後、ブレークポイントウィンドウでそれらのいくつかを無効にすることができます。

1

試してみることができるclass breakpoint add-inがあります。または、を追加するにはreplace expressionを使用できます。ここで説明するアドオンレス方式がある

+1

回答の2番目の部分を詳しく説明できますか? – goamn

4

ここにあなたのマクロがありますが、1000以上の機能にブレークポイントを設定するのに時間がかかります...そして、Visual Studioの速度が遅くなります!

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 
+1

このスクリプトをVS 2012で使用するには、関数を新しいAddinプロジェクトにコピーし、Addinプロジェクトの "OnConnection"メソッド内で "BreakAtEveryFunction"を呼び出します。このスクリプトは、.NETメソッドを実行するだけではあまりにも包括的で、エラーもあります.Addinプロジェクトは、 "DTE.Debugger"と "DTE.Solution.Projects"について不平を言い、 "DTE"を "_applicationObject"に変更します。 。 Addinプロジェクトの詳細については、[この回答。](http://stackoverflow.com/questions/12027485/alternative-to-macros-in-visual-studio-2012/12394986#12394986)を参照してください。 – goamn

1

何らかの理由で受け入れられた回答が機能しませんでした。私の回避策はVisual Studio 2010には当てはまらないと思いますが、私はVisual Studio 2015でMacros for Visual Studioの拡張機能を使ってこれを行いました。

ステップ:

  1. 検索(はCtrl +F)メソッドの開口ブレースのための右のインデント。通常は8個の空白(または設定に基づいて2個のタブなど)です。
  2. これに開閉括弧{を付け加えます。
  3. これを\r\nの前に置き、ネストされた中カッコと一致しないようにします。今は\r\n {のように見えるかもしれません。また、正規表現検索をオンにします(検索ダイアログで*を押す)。
  4. マクロの記録を開始します。
  5. F3を入力し、次にF9を押してブレークポイントを追加します。これは、トリックを使って見つかった最初のメソッドにブレークポイントを追加します。
  6. マクロの記録を停止します。あなたが持っているかもしれないメソッドの数のためにそれを再生します。
  7. 注意:終了時に注意してください。それ以外の場合は、上から再び開始され、追加したばかりのブレークポイントが削除されます。

混乱があることを教えてください。

関連する問題