12

C++ 関数の 2 つのオーバーロードがあり、そのうちの 1 つにブレークポイントを設定したいと考えています。

0:000> bu myexe!displayerror
Matched: 00000000`ff3c6100 myexe!displayError (int, HRESULT, wchar_t *)
Matched: 00000000`ff3c60d0 myexe!displayError (int, HRESULT)
Ambiguous symbol error at 'myexe!displayerror'

すべてのオーバーロードにブレークポイントを設定しても問題ありませんが、方法がわかりません。

0:000> bu myexe!displayerror*
Matched: 00000000`ff3c6100 myexe!displayError (int, HRESULT, wchar_t *)
Matched: 00000000`ff3c60d0 myexe!displayError (int, HRESULT)
Ambiguous symbol error at 'myexe!displayerror*'
4

5 に答える 5

7

試す:

bu 0xff3c6100

私の記憶が正しければ、WinDbg ではアドレスでブレークポイントを設定することもできます。

于 2008-10-02T10:20:29.220 に答える
5

「bm myexe!displayerror*」を試しましたか?

于 2008-12-23T12:08:21.393 に答える
3
bm myexe!displayerror

bcこれにより、不要なものをクリアするために使用するよりも、すべてのオーバーロードにブレークポイントが設定されます

bc 1-3

または、それらを無効にするだけです

bd 1-3

問題bmは、それが生成するブレークポイントが評価に失敗し、ブレークをトリガーすることがあるということです。時々迷惑。

于 2010-11-14T06:40:06.387 に答える
3

bp @@( MyClass::MyMethod ) メソッドのブレーク (同じメソッドがオーバーロードされ、複数のアドレスに存在する場合に便利)

于 2011-01-25T17:59:55.390 に答える
1

DLL を検索して、シンボルに一致するすべてのエントリ ポイントを探します

x myexe!displayerror

これにより、検索文字列とそのエントリポイントに一致するすべてのシンボルが出力され、アドレスにブレークポイントが設定されます

bp ff3c6100 // for myexe!displayError (int, HRESULT, wchar_t *)

これにより、そのアドレスがヒットしたとき、または他のアドレスに対して bp を設定したときに、特定のブレークポイントが設定されます。一度だけヒットするようにブレークポイントを設定し、ブレークポイントをクリアして終了することができます

bp /1 ff3c6100

また、コール スタックや変数をダンプして続行するなどのコマンドを実行することもできます。

bp ff3c6100 "kb;dv;g"

また、WinDbg がアタッチされているときにソース コードを開き、ブレークポイントを設定するコード行に移動して F9 キーを押すと (Visual Studio を使用する場合と同じです)、ブレークポイントを設定する前にしばらく一時停止します。その行で、これはソース コードにアクセスできることを前提としています。

于 2012-03-10T11:50:44.177 に答える