次の方法で共有


ある関数が何回も呼び出される場合、どの呼び出しでエラーが発生するのかを調べるには

問題の説明

CnvtV という関数を呼び出すとプログラムでエラーが発生します。プログラムでエラーが発生するまでに、その関数は 200 回から 300 回は呼び出されているようです。CnvtV に位置ブレークポイントを設定すると、この関数を呼び出すたびにプログラムが停止してしまうため、このブレークポイントは使用したくありません。どのような条件で呼び出しが失敗するのかが不明なため、条件付きブレークポイントは設定できません。どうしたらいいのでしょうか。

解決方法

[ヒット カウント] フィールドを使って、関数のブレークポイントに、絶対に到達不可能な大きい値を設定できます。この場合、CnvtV 関数が 200 回から 300 回は呼び出されているようなので、[ヒット カウント] に 1000 以上の値を設定します。その後、プログラムを実行し、エラーが発生するのを待ちます。エラーが発生したら、[ブレークポイント] ウィンドウを開き、ブレークポイントの一覧を確認します。CnvtV に設定されたブレークポイントは、次のように、後ろにヒット カウントと残りの繰り返し回数が付いた状態で表示されます。

CnvtV(int) (no condition) when hit count is equal to 1000 (currently 101)

この関数は、101 回目の呼び出しで失敗したことがわかります。ヒット カウントを 101 にしてブレークポイントを設定し直し、プログラムを再び実行します。すると、エラーの原因となった CnvtV 呼び出しのところでプログラムが停止します。

参照

概念

ネイティブ コードのデバッグに関する FAQ

その他の技術情報

Setting Breakpoints

ネイティブ コードのデバッグ