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 ヘルプで。