はじめまして。VC++初心者の者です。
Windows2000&VC++6.0でプログラムを作成しております。
ブレイクポイントを設定してデバッグモードで実行したいのですが、
実行すると、ブレイクポイントを設定した場所(●)が白色になり、
「一つ以上のブレイクポイントを設定できませんでした。
これらのブレイクポイントは無効です・・・。」
という、エラーダイアログが表示されてしまいます。
上記のようなブレークポイントの機能が無効になってしまう
原因がわかる方いらっしゃいますか?
VC++に詳しい方、是非アドバイスを頂けないでしょうか。
宜しくお願い致します。
Release版でデバッグしようとしていませんか?
メニュー → ビルド → アクティブな構成の設定 で,
"Win32 - Debug" を選択しているか確認してください。
間違えました。
> "Win32 - Debug" を選択しているか確認してください。
じゃなくて、"プロジェクト名 - Win32 Debug" でした。
>Release版でデバッグしようとしていませんか?
>
>メニュー → ビルド → アクティブな構成の設定 で,
>"Win32 - Debug" を選択しているか確認してください。
確認したのですが、"Win32 - Debug"になっていました。
最初の投稿で書き忘れたのですが、DLLのブレイクポイントです。
デバッグ開始時、メモリ上にロードさていないところに、
ブレークポイントを置いているためだと思います。
(DLLなので、遅延ロードなどになっていませんか?)
適当に操作を行い、DLLをメモリ上にロードさせてから、
一旦デバッグを停止させ(デバッグ状態のまま)、
その状態から、再度ファイルを開いて、ブレークポイントを設定させれば、
恐らく設定できると思います。
#私も、昔、これで悩んだことがあります。
>デバッグ開始時、メモリ上にロードさていないところに、
>ブレークポイントを置いているためだと思います。
>(DLLなので、遅延ロードなどになっていませんか?)
KING・王さんご指摘有難う御座います。
これも原因の一つだと思います。
デバックを開始すると混合モードでステップ実行が開始になり
別のプログラムが呼ばれて、そのプログラムがブレークポイントを
設定したいDLLを呼ぶんですが、こういった場合は
ブレークポイントは設定できないんですかね!?
別の掲示板で同じような内容がとりあげられています。
DLLではなさそうですが、参考にしてみて下さい。
http://www.mtakahashi.com/cgi.cgi?12396
自分はDLLに関してあまり知識が無いので・・・
お役に立てず申し訳ないです。
> そのプログラムがブレークポイントを設定したいDLLを呼ぶんですが
(1)まずDLL(の中の関数)を呼ぶ、もとのプログラム側のところに、
ブレイクポイントをおき、そこで、一旦ブレイクさせる。
(2)そこから、ステップインすれば、恐らく、DLL内のソースに入る。
(3)この時点で、はじめてDLLがメモリにロードされた状態になるので、
再度、DLL内のソースにブレイクポイントを設定する。
(4)デバッグを続ける。
これで、OKだと思います。
#ただし、これって、一旦デバッグを中止すると毎回、(1)の作業から、
#やりなおしになるので、めんどくさいですが。。。
>DLLではなさそうですが、参考にしてみて下さい。
pickさん有難う御座います。参考にしてみます。
KING・王 さん詳細有難う御座います。
試してみます。
解決致しました。
情報提供して下さった方々有難う御座いました。
ツイート | ![]() |