VCで浮動小数点ゼロ除算を検出
- -
338 From:デフォルトの名無しさん Date:2005/06/18(土) 07:57:27 Mail:sage
VC++ Ver6.0にてゼロ除算の箇所をデバックしたいのですが、
すみませんが方法を教えてください。
- -
339 From:デフォルトの名無しさん Date:2005/06/18(土) 17:27:30 Mail:
>>338
何がわからないのかね?
- -
340 From:338 Date:2005/06/18(土) 21:10:05 Mail:sage
ソースのどこかで、
double a = 100
double b = 0;
a = a / b;
が発生していると予測できるのですが、
その場所とタイミングが不明です。
メモリーリークは、BoundsCheckerでチェック可能ですが、
ゼロ除算やオーバフローについても
簡単に見つける事はできないでしょうか?
- -
341 From:デフォルトの名無しさん Date:2005/06/18(土) 21:41:54 Mail:sage
CPUのフラグを見る
- -
342 From:デフォルトの名無しさん Date:2005/06/18(土) 21:46:01 Mail:sage
>その場所とタイミングが
古典的に
ログ出力
- -
343 From:デフォルトの名無しさん Date:2005/06/18(土) 22:09:52 Mail:sage
>>340
除算なんてそんなに出てくる計算じゃないよ。
ソースの中をすべて"/ "(斜線とスペース)で検索かけてチェックしろ。
- -
344 From:デフォルトの名無しさん Date:2005/06/19(日) 04:18:35 Mail:sage
#ifndef DEBUG
#define DIV(a,b) (a/b)
#else
#define DIV(a,b) (b==0?TRACE(_LINE_):(a/b))
#endif
- -
345 From:デフォルトの名無しさん Date:2005/10/27(木) 18:21:57 Mail:
デバッガーにバグがあるのはごく普通でしょうか?
- -
346 From:デフォルトの名無しさん Date:2005/10/27(木) 20:20:19 Mail:sage
>>340
#include
int newmask = _EM_ZERODIVIDE;
_controlfp(0, _MCW_EM); // すべての浮動小数点例外を有効にする
- -
347 From:346 Date:2005/10/27(木) 20:21:21 Mail:sage
あれ、2行目関係ないや。
- -
348 From:338 Date:2005/10/27(木) 23:42:40 Mail:sage
>>346
サンクス デバッカ時にゼロ割りで止まってくれるようになったよ。
この知識はどういう方法で習得しているの?
MSDNヘルプ?
- -
349 From:346 Date:2005/10/28(金) 11:16:50 Mail:sage
4ヶ月も前のにレスしちゃったよ!
…と思ったら、役にたったようで何より。
>MSDNヘルプ?
「浮動小数点 例外」でググったら
_control87 ってのが見つかったから
後は MSDN ヘルプで。