デバッグ– category –
-
デバッグ
【MFC】Debug Assertion Failed! の正しい読み方
Debug ビルドで実行中に突然「Debug Assertion Failed!」というダイアログが表示されて、何をどう読めばいいか分からず閉じてしまった、という経験は珍しくありません。 この記事では、このダイアログに表示される情報の読み方と、ソースコード上の原因箇... -
デバッグ
【MFC】IsBadReadPtr / IsBadWritePtr は使うな
レガシーな MFC コードの中に IsBadReadPtr や IsBadWritePtr を使ったポインタチェックが残っていることがあります。一見安全そうに見えますが、Microsoft はこれらの関数を使わないことを推奨しています。この記事では、なぜ使ってはいけないのかと、代... -
デバッグ
【MFC】Run-Time Check Failure #2 – Stack around the variable was corrupted
Debug ビルドで実行したら突然「Run-Time Check Failure #2 - Stack around the variable '...' was corrupted」というダイアログが出て止まった、という状況は珍しくありません。この記事では、このエラーが何を検知しているのかと、原因の特定から修正ま... -
デバッグ
【MFC】UpdateData(TRUE/FALSE) の仕組み
MFC ダイアログで UpdateData を書く順番を間違えて、入力値がメンバ変数に入っていない、あるいは画面が上書きされてしまう、という事故は珍しくありません。 この記事では、UpdateData(TRUE) と UpdateData(FALSE) の役割を、DDX の裏側・自動呼び出しの... -
デバッグ
【MFC】Memory Leak Detection: _CrtSetDbgFlag でリークを自動報告させる
new で確保したメモリを delete で解放し忘れると、長時間実行時のメモリ増加や不安定化につながります。 この記事では、Cランタイム(CRT)のデバッグ機能を使って、終了時に解放漏れを報告させ、ログから確保箇所を確認する手順をまとめます。 _CrtSetDb... -
デバッグ
【MFC】Watch Window (ウォッチウィンドウ) のフォーマット指定子
ウォッチウィンドウでは、停止中の変数や式をその場で確認できます。 この記事では、フォーマット指定子を使ってエラーコード、配列、文字列バッファを見やすく表示する方法を記載します。 ウォッチウィンドウの基本と開き方 一応のおさらいです。デバッグ... -
デバッグ
【MFC】Call Stack (呼び出し履歴) の歩き方
クラッシュで停止したとき、黄色い矢印の行だけを見ても原因に届かないことがあります。 この記事では、Call Stack を使って呼び出し元へ遡り、不正な値が入った場所を確認する手順をまとめます。 Call Stack (呼び出し履歴) の役割 プログラムが関数を呼... -
デバッグ
【MFC】Data Breakpoint (データブレークポイント): 変数が書き換わった瞬間に止める
変数の値がどこで書き換わったのか分からないケースでは、通常のブレークポイントだけでは原因に届かないことがあります。 この記事では、Visual Studio の データブレークポイント(Data Breakpoint) を使って、特定の変数への書き込みで停止し、呼び出... -
デバッグ
【MFC】ASSERT(条件) でバグを早期発見する
ASSERT で止まった場所は、前提が崩れた場所です。ここで止まるなら、その少し前から値か状態がおかしくなっています。 この記事では、Debug Assertion Failed! ダイアログの見方と、Releaseで消える性質を前提に ASSERT をどう置くかを整理します。 最初...
1