- 締切済み
読み込みデータが変化する理由
下記の環境で行っております。 windows 7 32bit OS、Visual studio 2010 C# デバックモードで一行ずつ ステップインで読み出したデータを見ると正常な値を示しています。 ただ、そのままビルド(debug:any cpu)して実行すると、ステップインでは読み出したデータと違う値が得られます。こういうことはあるのでしょうか?色々読み出す時間などを長くとったりして試したのですが、解決しておりません。 お手数お掛け致しますがご教示お願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- BarcodeMaster
- ベストアンサー率73% (17/23)
何をどのように処理されているのか、具体的に教えて下さい。 ウォッチしてみると正常だが、ファイルに出力するとおかしいとかですか?
- koi1234
- ベストアンサー率53% (1866/3459)
>最適化の問題ではないとすると、そのほかに考えられる問題はありますでしょうか? そのままビルドしてと書かれてるので違うのかもしれませんが リリースビルド・デバッグビルドの違いがあるのであればコンパイルオプションの違い (最適化だけとは限らない) によって変わることもありますし実行モジュールが作成される フォルダ構成も変わるはずなので読みだすべきデータがファイルで パス指定の問題により正常に読み込めないとか言ったことはありえます
- yama1718
- ベストアンサー率41% (670/1618)
少し補足です。 読み出しとか言われているので、配列や構造体のアライメントの設定がデバックとリリースで違わないか確認して見て下さい。
- yama1718
- ベストアンサー率41% (670/1618)
デバックとリリースで実行結果が違うというのは、最適化に原因があるのではと思います。 デバックではコードとソースリストが1対1に対応する必要があるので、最適化はしないか、あまり過剰な最適化はしないのが普通です。 リリースで最適化を最大にしていると、結果が同じであれば良いという風に複数行やブロックに渡って最適化されて原型を留めていない事もあります。 それで動けばいいのですけど、稀に最適化のバグでおかしくなる事もあります。 リリースでも最適化をしないにするとか、他のオプションもデバックとの違いを確認して下さい。
補足
ご回答ありがとうございます。 デバックとリリースともに結果は同じですが、データは正常ではありません。 どちらもメインルーチンの最初からブレイクポイントを設定してステップイン実行すると、すべて正常な値となり困っております。最適化の問題ではないとすると、そのほかに考えられる問題はありますでしょうか?