スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« へルプはそのまま | トップページ | 46が47になっていた »

コンパイラのバグ回避が厄介

今は、MasterReversiの次バージョンを開発中で、コーディングは終了しているので、バグ出しと問題点の修正を行っている。今日は、一回目のバグ出しは終わったので、その修正作業を行っていたのだが、厄介なのはVisaul Studio Community 2013の64Bitコンパイラのバグだ。

少し前にも書いたのだが、まず、間違いなく、Visual Studio Community 2013の64Bitコンパイラにはバグがあって、最適化を行わせた状態でビルドすると、プログラムがクラッシュする事が頻繁にある。

特に、最適化として、「インライン関数の展開」と「組み込み関数を使用する」を有効にしていると、作者製ソフトの殆どはクラッシュする感じなので、ここの所リリースしている作者製ソフトでは、これらのオプションは無効にしている。

もっとも、上記のオプションについては、性能的な問題は発生しないので、実質的に、有効にする必要も無かった。

しかし、今日、64Bit版のコードを変更していると、最適化に「実行速度の最大化」や「最大限の最適化」を指定するとクラッシュし、「無効」を選択するとマトモに動作する現象に遭遇してしまった訳だ。

当然の事ながら、32Bit版のビルドでは問題は発生しないし、64Bit版についても、デバッグモードで動作させると最適化は自動的に無効になるので、現象は発生しない。

と、いう事で、変更した箇所は判っているので、その箇所を元に戻したりしながら、現象の発生有無を確認しているのだが、上記の通りなので、デバッガは使えない。

このため、自前のトレースを入れつつのデバッグ作業になっているのだが、最適化を無効にすると、処理性能は2倍以上は低下する筈なので、致し方ない所ではある。

ちなみに、問題が発生しているのは、評価データにVBSなんかのスクリプトを追加した場合の話になるので、通常の評価データを使用している分には、問題は発生しない。

逆に言うと、ソースコード的に問題が無いプログラムでも、コンパイラを使う以上、ビルド後のバイナリの全機能確認は必須、という事になる。

と、いう事なので、古いプログラムのソースコードを大量に持っている企業なんかでも、新しいコンパイラを使ってビルドし直す、なんて事は、まず、行われない訳だ。

なので、コンパイラ開発側にしてみれば、不具合報告が無いので、問題は無いと思っているのかもしれないのだが、ネットを検索すれば、Visual Studio 2013の64Bitコンパイラの最適化にはバグがある、と、書いているのは作者だけではない事が判る筈なので、興味のある人は検索してみれば良いかもしれない。

= この記事に関連する公開中ソフト =

MasterReversi

MasterReversi

(2016/05/04追記)

« へルプはそのまま | トップページ | 46が47になっていた »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/63479671

この記事へのトラックバック一覧です: コンパイラのバグ回避が厄介:

« へルプはそのまま | トップページ | 46が47になっていた »

2017年8月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google