2016-04-16 13 views
0

私はデスクトップ用のVisual Studio 2012 Expressを使用しており、Winsockクライアントサーバーに基づくコードがあります。この問題は、プログラムを実行しているときに発生します。プログラムの1つの機能は、デバッグ時にのみ機能します。なぜそれが起こることができますか?どんな助けもありがとうございます。デバッグ時にのみ動作するコード

+1

ほとんどの場合、UBの種類があります。 [mcve]を作成してください。 –

答えて

3

Visual Studioの場合、通常のデバッグのデフォルトを使用してコンパイルした場合、実行時にはリリースモードでは実行されないことがあります。

変数は0(またはデフォルト)に初期化されますが、リリースモードは初期化されません。したがって、初期化されていない変数が使用されている可能性があり、デバッグバージョンを実行しているときに問題が表示されないことがあります。

あなたの最善の策はdebug the release versionです。その後、アプリケーションのリリースビルドで統合デバッガを使用することができます。

+1

私はこのコードをサーバーに持っています。デバッグ時およびリリース時に機能する機能は、[コード](http://ideone.com/eHMey6)の行にあります。ビジュアルスタジオのバージョンを変更することはできません。これは、このバージョンで動作することを確認してリリースする必要があるためです。 @ありがとうございます@PaulMcKenzie – Zarauztarra

+2

いいえ、コンパイラのバージョンを変更する必要はありません。デバッグシンボルでリリースバージョンを再構築するだけです。実際には、とにかくこれを行うべきです(デバッグを行うために必要な.PDBファイルを作成しておく必要があります)。また、「サーバー上とサーバー上でのみ再現可能なバグがある場合はどうすればよいですか?」と尋ねたはずです。だったらどうしようか?リモートデバッグ、クラッシュダンプの作成、Visual Studioでのクラッシュダンプのデバッグなどがあります。プログラムを他のマシン/サーバー/環境にプッシュすると、これらの問題が考慮されているはずです。 – PaulMcKenzie

+0

リリース版でコードのデバッグを試みましたが、問題は残ります。デバッグエラーはなく、クラッシュはありません。たとえば、2人の異なるユーザーの4つのメッセージを受け取ることを期待しているだけで、リリースバージョンを実行すると、1人のユーザーのうち2人が表示されます。デバッグ時(リリース版も試しました)、完全に動作します。 @PaulMcKenzie – Zarauztarra

関連する問題