Visual Studio は、ブレークポイントにヒットしたときにコール スタックを出力し、条件が満たされたときに停止できます。それを組み合わせて、選択した別の関数から関数が呼び出されたときに停止し、他のすべての呼び出しを無視する方法はありますか?
2178 次
2 に答える
4
これを行う唯一の方法はマクロを使用することだと思います。ブレークポイントを右クリックし、[ヒットしたとき..]を選択し、[マクロの実行]を選択して、次のようなマクロをポイントします。
Sub ContinueUnlessCalledFromRightContext()
For Each frame As EnvDTE.StackFrame In DTE.Debugger.CurrentThread.StackFrames
If (frame.FunctionName.Contains("SomeOtherMethodsName") Then Exit Function
Next
DTE.Debugger.Go() ` we weren't called from the right context so continue execution.
End Sub
上記は半分の疑似コードです。私は実際にそれをテストしませんでしたが、いくつかのマイナーな編集で動作するはずです。
ブレークポイントからマクロを実行するのは本質的に非常に遅いため、ブレークポイントに何度もヒットすると、これは地獄のように遅くなることに注意してください。
ところで、.NET / C#について質問している場合は、はるかに簡単でしたが、条件付きブレークポイントを作成することもできます。
new System.Diagnostics.StackTrace().ToString().Contains("SomeOtherMethodsName")
...そしてそれで終わります。
于 2012-01-25T19:12:13.370 に答える
3
確かではありませんが、フィルタリングまたは条件のいずれかでできるかもしれませんが、代わりに呼び出しプロセスにブレークポイントを置く方が簡単かもしれません
これは良いリソースです: Visual Studio 2010 でのデバッグの習得 - 初心者向けガイド
于 2012-01-25T16:37:19.213 に答える