2008-08-12 16 views
2

H.263ビデオエンコーダをループで31回実行するためのワークスペースがあります。つまり、メインは31回実行され、31個の異なるエンコードビットストリームが生成されます。このMS Visual Studio 2005ワークスペースには、すべてのCソースファイルがあります。私がワークスペースの "DEBUG"設定を作成してビルドして実行すると、正常に実行されます。つまり、31の出力ファイルがすべて期待通りに生成されます。 しかし、ワークスペースの構成を「リリース」mdoeに設定してプロセスを繰り返すと、エンコーダがいくつかのテストケース実行時にクラッシュします。MS Visual Studio 2005のRELEASEコンフィギュレーションでのコードクラッシュ

  1. はエンコーダ
  2. のすべての実行で逃しされている任意の変数の初期化は、さまざまなワークスペース(ソリューション)のオプションをチェックがあったかどうかを確認するためにコードを分析:これは、次の確認されたデバッグするために今

    両方のモード(DEBUGとRELEASE)。

いくつかの明らかな違いがありますが、最適化関連のオプションを両方のモードで明示的に同じにしました。

しかし、まだ問題を釘付けにしてその修正を見つけることはできませんでした。すべてのポインタ?

-Ajit。

答えて

2

コードを慎重に調べなければ、問題がどのようなものかはっきりと言うことはできません。しかし...

デバッグビルドとリリースビルドの違いの1つは、関数呼び出しスタックフレームの設定方法です。デバッグビルドでは致命的ではないが、リリースビルドではひどくクラッシュするような悪質なものがいくつかあります(間違った数の引数で関数を呼び出すようなことがあります)。デバッグビルドと同じリリースビルドでスタックフレーム関連のオプションを変更しようと思うかもしれません(申し訳ありません)。

また、可能な限りすべての警告を有効にして、すべて修正することもできます。

0

リリースモードで本当に重要なコードを無視し、デバッグで使用できるプリコンパイルディレクティブはありませんか?

また、エラーをスローする正確なアセンブリを指摘する可能性のあるログを実装しましたか?

1

2つのスレッドの並行性の問題があります。 DEBUG構成では、実行が遅くなるため、問題は発生しません。しかし、唯一の推測。

1

興味深い問題..リリースモードでコンパイルされていない条件コンパイルコードはありませんか?すなわち:私は本当にこの私のような...経験したことはありません何も考えることができる唯一のことザッツ

#if (DEBUG) 
// Debug Code here 
#else 
// Release Code here 
#endif 

..

0

は、私はより詳細にクラッシュを見てしまう - それはテストケースでクラッシュだ場合には、それは非常に簡単に再現可能なように聞こえますが、これは通常ほとんどの課題です。

1

デバッグシンボルをリリースビルドに追加してデバッガで実行して、クラッシュした場所と原因を確認できますか?

0

考慮すべきもう1つの点:デバッグモードでは、変数は0ではなく0xCCCCCCCCで初期化されます。それはいくつかの厄介な副作用があるかもしれません。

1

ええ、それらのバスタードクラッシュは修正するのが最も難しいです。 Fortunatly、コードを手動で見て針を見つけることを望む前に手がかりを与えるいくつかのステップがあります。

いつクラッシュしますか?すべてのテストで?特定のテストで?他の人がしていないテストは何をしていますか?

エラーは何ですか?アクセス違反の場合、どこにパターンがありますか?アドレスが低い場合は、どこかに初期化されていないポインタがある可能性があります。

プログラムはデバッグ設定でクラッシュしていますが、デバッガは接続されていませんか?もしそうなら、John Smithersが指摘したように、スレッド同期の問題が発生する可能性が最も高いです。

Purifyなどのアナライザーでコードを実行しようとしましたか?遅いですが、通常は待つ価値があります。

とにかくリリース構成をデバッグしようとします。アセンブリをダンプするだけですが、コードポインタがガベージの途中でジャンプしたり、外部ライブラリのブレークポイントにヒットした場合など、何が起こっているかを示すことができます。

あなたはIntelアーキテクチャを採用していますか?そうでない場合、メモリ配列エラーを監視します。いくつかのアーキテクチャでは警告なしでハードクラッシュします。これらのコーデックアルゴリズムは、過度に最適化されているため、これらの状況を多く生成する傾向があります。

関連する問題