• 締切済み

読み込みデータが変化する理由

下記の環境で行っております。 windows 7 32bit OS、Visual studio 2010 C# デバックモードで一行ずつ ステップインで読み出したデータを見ると正常な値を示しています。 ただ、そのままビルド(debug:any cpu)して実行すると、ステップインでは読み出したデータと違う値が得られます。こういうことはあるのでしょうか?色々読み出す時間などを長くとったりして試したのですが、解決しておりません。 お手数お掛け致しますがご教示お願い致します。

みんなの回答

回答No.4

何をどのように処理されているのか、具体的に教えて下さい。 ウォッチしてみると正常だが、ファイルに出力するとおかしいとかですか?

全文を見る
すると、全ての回答が全文表示されます。
  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.3

>最適化の問題ではないとすると、そのほかに考えられる問題はありますでしょうか? そのままビルドしてと書かれてるので違うのかもしれませんが リリースビルド・デバッグビルドの違いがあるのであればコンパイルオプションの違い (最適化だけとは限らない) によって変わることもありますし実行モジュールが作成される フォルダ構成も変わるはずなので読みだすべきデータがファイルで パス指定の問題により正常に読み込めないとか言ったことはありえます

全文を見る
すると、全ての回答が全文表示されます。
  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.2

少し補足です。 読み出しとか言われているので、配列や構造体のアライメントの設定がデバックとリリースで違わないか確認して見て下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.1

デバックとリリースで実行結果が違うというのは、最適化に原因があるのではと思います。 デバックではコードとソースリストが1対1に対応する必要があるので、最適化はしないか、あまり過剰な最適化はしないのが普通です。 リリースで最適化を最大にしていると、結果が同じであれば良いという風に複数行やブロックに渡って最適化されて原型を留めていない事もあります。 それで動けばいいのですけど、稀に最適化のバグでおかしくなる事もあります。 リリースでも最適化をしないにするとか、他のオプションもデバックとの違いを確認して下さい。

noname#256139
質問者

補足

ご回答ありがとうございます。 デバックとリリースともに結果は同じですが、データは正常ではありません。 どちらもメインルーチンの最初からブレイクポイントを設定してステップイン実行すると、すべて正常な値となり困っております。最適化の問題ではないとすると、そのほかに考えられる問題はありますでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • TRACKER : error TRK0002:

      お世話になります。 Visual Studio 2010 SP1(VB.net)での"ビルド失敗"についての質問です。 OSが Windows7 Pro(32bit)、DBはSQL Server2008、Framework2.0でビルドも正常に成功し 正常に動作しているアプリがあります。 そのソースをOSがWindows 7 Pro(64bit)でその他の環境は上記と同じPCにソースをコピーし ソリューションを開いてビルドを行うとビルドが失敗してしまいます。 エラー、警告は1件もなく、出力ウィンドウを見ると以下のメッセージが出力されていました。 ------ ビルド開始: プロジェクト: DBconnect, 構成: Release Any CPU ------ TRACKER : error TRK0002: ========== ビルド: 正常終了または最新の状態 0、失敗 1、スキップ 0 ========== アプリで使用している小さなクラス(DB接続のみ)のような複雑ではないコードでも ビルドに失敗してしまいます。 エラーメッセージで調べてみると 64bit開発環境 特有のエラーらしいことは分りましたが Visual C++(?)の情報しか見つけられませんでしたので質問させていただきました。 解決方法を知っている方がいらっしゃいましたらご教授お願い致します。

  • FLOATからlongに変換する時

    FLOATからlongに変換する時Visual Studio6(32Bitマシン)とVisual Studio8(64Bitマシン)で結果が異なるようですが、Visual Studio8でビルドする時Visual Studio6と同じ結果を得るようにできるでしょうか? Visual Studioの設定で可能なのか、ソースコードの記述で可能になるか教えてください。

  • Microsoft visual C++ Express Edtionでビルドできない

    Microsoft visual C++ Express Edtionを使っていますが、次のプログラムをビルドして、実行ファイルを使おうとすると次のエラーがでます。何処が違っているでしょうか? /* 整数値との和を表示する */ #include <stdio.h> int main(void) { printf("%d", 15 + 37); return (0); } ------ ビルド開始: プロジェクト: test2, 構成: Debug Win32 ------ リンクしています... LINK : fatal error LNK1104: ファイル'.\Debug\stdafx.obj' を開くことができません。 ビルドログは"file://d:\MYDOCUMENTS\Visual Studio 2005\Projects\test2\test2\Debug\BuildLog.htm" に保存されました。 test2 - エラー1、警告0 ========== ビルド: 0 正常終了、失敗、更新、スキップ==========

  • 自動でステップオーバーされる関数にしたい

    Visual StudioでF11をおしてステップインしたときに エラーの起こりようがないような関数の中には入らないようにできないでしょうか。 class HOGE{ int hoge; public: int getHoge(){ return hoge; } //このような関数にステップインしたくない }; リリースビルドではインライン関数にするとステップインできないようになりますが、 デバッグビルドでも問答無用でステップインしないようにする方法はありませんか? または、デバッグビルドでも関数単位でインライン展開を指定できるような方法はありませんか? __forceinlineをつけても、やはりデバッグビルドでは無視されてしまいました。

  • [C#]データベース(mdf)のデータ更新について

    Visual Stadio 2013でC#を使っています。 その中で、データベースを使いたいのですが、 データの更新が不便だったので質問させてください。 プログラム上から実行して指定のテーブルのデータを変更しても、 再度起動すると反映されていません。 bin -> Debugの中にあるビルドしたexeファイルを実行して データ更新すると、ツールを再起動してもデータは変更されていました。 しかし、この後プログラムから実行するとデータが元の戻ってしまいます。 プログラムから実行と、ビルドされた時では参考にしているDBファイルが違うせいなのかなと思うのですが、これをどちらから実行しても同じDBファイルが書き換わるように変更する方法はあるのでしょうか? よろしくお願いします。

  • Microsoft Visual Studio 2008 Express Edtion で”ソリューションのビルド”について

    Microsoft Visual Studio 2008 Express Edtionでメニューから”ソリューションのビルド”を実行した際に、”Debug”フォルダが作成されて、その中にexeファイルが出力されたのですが、このファイルをコピーして他のPCに貼り付けてあげれば、ビルドしたプログラムは動作してくれるのでしょうか。

  • visual studio 2008

    初めて質問させて頂きます。 来年度入社する会社でvisual fortranを使うということで現在練習中なのですが、初っ端からつまづいてしまって困っています。 新規プロジェクトからメインプログラムコードを選択し、サンプルコード(Hello World)を実行するのに、一週間前はすんなり出来たのですが、次の日から出来なくなっていしまいました。 具体的にはビルド後、以下のように表示され ========== ビルド: 0 正常終了、0 失敗、1 更新不要、0 スキップ ========== 正常にビルドされたと思いデバッグすると、 "○○.exe”を開始できません。指定されたファイルが見つかりません。" とエラーになります。 実際、その実行ファイルは存在せず、Debugというからのフォルダだけができているという状況です。 いろいろ調べて自力でなんとか解決ししようと試みたのですが、さすがに1週間が過ぎて質問させて頂きました。 ちなみに、正常に実行された次の日に新しくインストールしたソフトがあったのでそれはアンインストールし、Visual studio自体もインストールし直しましたが結果は同じでした。 もし考えられる原因が思い当たる方がいらっしゃいましたら、ぜひ教えてほしいです。 お願いします。

  • VS2012 C# バイナリが32bitで動作固定

    文字数制限のため、わかりづらいタイトルになってしまいました。 Windows 7 64bit版のOSにてVisual Studio 2012 for Windows Desktopを 使っています。言語はC#です。 デフォルトでコンパイルしたバイナリが64bit環境にもかかわらず32bitで 動作してしまうので、理由を知りたいです。 手順 1.コンソールやフォームのプロジェクトを新規作成して、ソリューション構成を 「Release」にします。ソリューションプラットホームは「Any CPU」であることを 確認します。 2.コンソールの場合、すぐ終わらないようにMain関数に「Console.ReadKey();」等を 記述します。 3.「すべてを保存」して、「ソリューションのビルド」をします。 4.コンパイルしたバイナリを直接実行すると、「32bitで動作」してしまいます。 5.プロジェクトの「対象のフレームワーク」を「.NET Framework 4」にします。 6.ビルドして実行すると、「64bitで動作」しています。 7.プロジェクトの「対象のフレームワーク」を「.NET Framework 4.5」に戻します。 6.ビルドして実行すると、「64bitで動作」しています。 手順中の 6. と 8. にて「64bitで動作」することは理解できるのですが、4. にて 「32bitで動作」する理由がわかりません。こちらの原因をお教えいただけると 助かります。

  • Machine debug manager 無効

    Visual Studio .NETを使っているのですが 最近、「開始」「デバッグなしで開始」「ステップイン」などの機能を使うと 「デバッグを解しできません. Machine Debug Manager サービスは無効です」 という表示が出て機能を使うことができません。 オプション設定などを見てもどこをどういじればいいのかわかりませんでした。 使用しているVisual Studio .NETは 私の所属している学科がライセンス契約をしているので そこでインストールしたものです。 どうか対処法を知っている方はお教えください。

  • cppファイルを直接visual studioで開き、ビルドするには?

    cppファイルを直接visual studioで開き、ビルドするには? 私はvisual studio 2008を使ってプログラミングをしています。 いつもみたいに、プロジェクト作成→cppファイル作成って流れでやると普通に(ビルドやデバッグが)できるのですが、 プロジェクトを作成せず、裸のcppファイルだけをvisual studioで開くと、ビルドとか何もできません。実行して、コンソール画面を出したいのですが…。 出来る方法はあるのでしょうか? また、どうしてこの方法ではできないのかも、教えてくれるとありがたいです。 よろしくお願いします。

このQ&Aのポイント
  • 成形機の射出機に使用しているバンドヒーターに問題が発生しています。ヒーターカバーにしわが生じ、絶縁体が破損しています。
  • バンドヒーターを高いトルクで締めこむと、ヒーターがはみ出すように移動し、地絡が増加します。
  • ヒーターがはみ出さないようにするためには、トルクの調整やヒーターカバーの改修が必要です。
回答を見る