Debug Assertion Failed

解決


コロン  2009-04-06 13:34:37  No: 69925  IP: [192.*.*.*]

CFileDialogを使用して開くファイルを選択するようにしたいのですが、
デバッグモードで実行すると
Microsoft Visual C++ Debug Libraryというタイトルのメッセージボックスが出てきます。
ちなみにリリースモードで実行すると出ないようです。


表示されたメッセージは以下のとおりです。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Debug Assertion Failed!

Program:--------\Test.exe
File:-------------\afxwin1.inl
Line:26

For information on how your program can cause an assrtion
failure,see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
『中止』、『再試行』、『無視』のボタンがついており、
中止以外を押せば一応ダイアログは表示されますが、原因が分からないため先に進めません。

ダイアログを表示するプログラムは以前使用していたものをそのまま使ったため問題はないと思うのですが・・・。

編集 削除
Blue  2009-04-06 13:51:01  No: 69926  IP: [192.*.*.*]

再試行 を押してASSERTのある行を見てください。

ASSERT(条件式)

の条件式が偽になる場合にそのダイアログが出ます。
ASSERTが出るのは、その条件は最低限満たさないとそのあとの処理に支障がでるよ
というのを開発者に教えてあげるためです。
Releaseモードではそのマクロは実行されません。

また、MFCのソースまで行ってしまっている場合は、コーススタックウィンドウを活用して、
自分のソースまで戻るとよいでしょう。

編集 削除
コロン  2009-04-06 14:09:56  No: 69927  IP: [192.*.*.*]

Blueさんありがとうございます!

>また、MFCのソースまで行ってしまっている場合は、コーススタックウィンドウを活用して、
>自分のソースまで戻るとよいでしょう。

afxwin1.inlっていうファイルでASSERTになるんですが、MFCソース内ってことでいいのでしょうか?
また、コーススタックウィンドウというのはどんなものなのか、どう使えばよいのか、教えていただけませんでしょうか?

編集 削除
Blue  2009-04-06 14:21:36  No: 69928  IP: [192.*.*.*]

Visual Studioのバージョンに依存するので、
それを示されていない以上回答できません。

編集 削除
コロン  2009-04-06 14:47:19  No: 69929  IP: [192.*.*.*]

すみません。
VC.NET2003です。

編集 削除
Blue  2009-04-06 15:00:24  No: 69930  IP: [192.*.*.*]

http://altair.toc.cs.hiroshima-cu.ac.jp/~ryo-f/lecture/progex3/debugger/debugger.html
の「呼び出し履歴」の記述のあたりを参考にしてみてはどうでしょうか。

編集 削除
コロン  2009-04-06 15:29:00  No: 69931  IP: [192.*.*.*]

Blueさんありがとうございます!
教えてもらったサイトで勉強してみます!m(__)m

編集 削除