いつもお世話になっています。ggです。
Releaseの場合プレークポイントを貼っていますが、
デバッグの「開始」を押すと、
プレークポイントを効かないのです。
(Debugの場合は問題がなく、ポイントの場所に止まっています)
別の追跡の方法があるのでしょうか。
ちなみに、Debugの場合は問題がなく、
Releaseの場合は通らないということですが
何が問題があるのでしょうか。
よろしくお願いします。
環境:.Net MFC使用 WinXP
最適化で当該コードが生成されてないとか。
Banさん
ご返事ありがとう。
>最適化で当該コードが生成されてないとか。
最適化でどういうことですか。
よろしくお願いします。
デバッグ情報が生成されてないとか。
あ、「プレークポイント」じゃなくて「ブレークポイント(Break Point)」ですよ。
{
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
printf(%d\n, sum);
}
というコードは、
{
printf(5050\n);
}
というコードと同じ実行結果が得られます。
リリースモードでは、コンパイラがこのような判断をして、
実行速度や実行ファイルの大きさが最適(最速・最小)になるように、
コンパイルしますので、上の例だと sum += i; にブレークポイントを
張っていても停止することはありません。
そんな行を実行することはないのだから。
リリースモードでしか発生しないバグを追跡する方法としては、
メッセージボックスを表示させて絞り込んだり、
テキストファイルにログを記録したり、と、デバッグモードでの
デバッグと比較して、難しい場合が多いです。
# そもそもVCから起動する場合だけは正常に実行されたり。
それと環境にはVCのバージョンも書くとベター。
シャノンさん、たいちうさん
ご返事ありがとう。
実は、デバックモードからリリースモードに変更するときに
あるエラーが出ました(パス不正という問題)。
そのときに、
「スタートアッププロジェクトに設定」を選択すると
エラーが出なくなりました。
>リリースモードでしか発生しないバグを追跡する方法としては、
>メッセージボックスを表示させて絞り込んだり、
>テキストファイルにログを記録したり、と、デバッグモードでの
>デバッグと比較して、難しい場合が多いです。
そうですか、結構面倒ですね。
ほんとにありがとうございました。
> リリースモードでしか発生しないバグを追跡する方法としては、
> メッセージボックスを表示させて絞り込んだり、
> テキストファイルにログを記録したり、と、デバッグモードでの
> デバッグと比較して、難しい場合が多いです。
リリースモードでもステップ実行はできますよ。
> リリースモードでもステップ実行はできますよ。
それは知っていますが、
> # そもそもVCから起動する場合だけは正常に実行されたり。
と書いたように、リリースモードのデバッグ機能の有効性に疑問を
感じているため、より汎用性が高いと思われる方法のみ紹介しました。
シャノンさん、たいちう さん、
ご返事ありがとう。
>> リリースモードでもステップ実行はできますよ。
>それは知っていますが、
さきほど、リリースモードで実行しました。
ステップ実行はできます。
リリースモードとデバックモードがなにを違っていますか
という質問は前回の「Releaseの場合」にしました。
そこに回答していただきたいと思っています。
ほんとうに、ありがとうございました。
すみません、
ステップ実行できるというのは、DLL側ですが、
Exe側にできません、
例:
*View.cppに貼っていますが、
実行すると、黒い丸中に?があります、そういう場合は
ステップ実行できません。
何か設定の問題ですか?
)と書いたように、リリースモードのデバッグ機能の有効性に疑問を
)感じているため、より汎用性が高いと思われる方法のみ紹介しました。
どういう方法ですか。
よろしくお願いします。
追記:
今は、デバックモードの場合にプログラムを修正していますが、
インストールファイルを作成する場合はリリースモードにしてやっています。
もうしリリースモードの場合にステップを実行すれば、結構楽な作業になります。
よろしくお願いします。
リリースモード時はステップを実行しません。
実行できても変数値も確認できない場合が多い。(殆ど)
目的の場所に止まらない(ブレーク)しない場合が多い。
よってデバッグモード時に実行しましょう。
その症状だと多分、exeのデバッグ情報にアクセスできないのでは。
例えば、exeのプロジェクトも持っているなら、そちらからやってみる。
リリース版用のデバッグ情報を作っておく、リビルドしてみる、
など試してみてはどうでしょう。
ITO さん、Ban さん
ご返事ありがとう。
>よってデバッグモード時に実行しましょう。
そうですね、従来の通りやります。
でも、
>リリースモードでもステップ実行はできますよ。
ということは何でしょうか。
(ちょっと気になった)
よろしくお願いします。