私は今、非常に特殊な問題に取り組んでいます。私はMSVC環境から実行するか、ビルドされた実行可能ファイルを自分自身で起動するにしても、Debug-Buildmodeで完全に動作するアプリケーションを持っています。 Release-Buildmodeでこのアプリケーションをビルドすると、MSVC環境から実行すると完全に機能しますが、自分で起動すると予期しない動作が発生します。MSVC++デバッグとリリース環境の相違点
デバッグモードとリリースモードの違いは、この現象の原因となる可能性があります。また、手動で実行可能ファイルを開始すると問題が発生するのはなぜですか?
非常に大きなプロジェクトであり、問題の原因となる可能性のあるものが全くないので、コードを付けるのは難しいです。プログラムの流れは基本的にあります。ファイルから
- 読むの設定(ない問題は、二重の読み取り値をチェックし、ini-とlibconfig ++を使用 - 確かにライブラリを)
- クラスを区切るための値を配布します(二重の私がかもしれないと想像
何かが(リリースビルドを手動で実行した場合、これらはトリガされません)これらのクラスの一つは、スレッド(boost::thread
)を開始し、特定のイベントにコールバック関数をトリガし、渡された値)
- 、
std::string
とstd::wstring
の使用の間に矛盾があります。私はstd::wstring(s.begin(), s.end())
を使用して1つから別のものに変換しています。
これが私の問題の原因である可能性があります。はいの場合、どのように問題を解決できますか?私は本当にこれについていくつかの助けに感謝します。前もって感謝します。
更新:
- プログラムがクラッシュしないと変数は、私が(デバッガのすべてがうまくうまくいく中であるため)悪名高いプリントデバッグ方法を使用する場合
- 異なる値を持っていないようです私はunitialized変数がこの問題を引き起こしている可能性があり、私が使用するすべての変数を3回チェックして、すべての変数が適切に初期化されていることを読んだ。
- ユニットテストでは、私が使用しているモジュールはすべて期待通りに機能する私はhavvので、毎回国境のケースすべてのモジュールは自分で書かれていません)。
アップデート2:
- ステップによって最適化ステップを無効にし、近い私は、問題を絞り込むことができたデバッグbuildmodeにリリースbuildmodeをもたらしながら:**コード生成]タブで、私のプログラムは、で動作し、
Multithreaded-DLL
ではなく、最適化設定に関係します。
これは素晴らしい成果だと思われますが、私はこの問題の理解が不足しています。
何が問題なのですか?プログラムはクラッシュしますか?これらのイベントをトリガーするコードを見つけようとしましたか?完全に文字列の不一致を修正しましたか? –
これはしばしば、プログラムの起動方法によって異なる乱数値を取得する初期化されていない変数です。 –
@Bojan Komazec "完全に文字列が矛盾する"とはどういう意味ですか?上記のように、std :: stringをstd :: wstringに数回変換する必要があります。 – nijansen