1

私はC++ソフトウェア画像処理ツールを書いています.ツールは正常に動作しますが、突然停止し、例外やクラッシュを送信したり、クラッシュした行や領域を知らせたりすることはありません.

その状況でその欠陥のあるコードをどのように判断できますか?

4

3 に答える 3

1

できることがいくつかあります。

まず第一に、それは無限ループ、デッドロック、またはすべてのシステムリソースを使用しているように聞こえ、速度が低下し、非常に(場合によっては無限に)長い時間がかかります。その場合は、デバッグで見つける必要があります。


あなたが試すことができること-必ずしもこの順序である必要はありません:

  1. 使用している共有変数を探します。スレッドとミューテックスでデッドロックが発生する可能性はありますか?それについて考えて、それを修正してみてください。

  2. 初期化されていない変数/ポインタの使用を確認してください。未定義の動作を呼び出すと、(まれに)非常に奇妙な動作が発生することがあります。私はWindows C ++開発者ではありません(Linuxで作業しています)が、セグメンテーション違反によるロックアップを初めて見たわけではありません。

  3. エラー出力(std :: cerr / stderror)を処理ロジックに追加して、どこまでクラッシュするかを確認できるようにします。その後、その時点でそれをキャッチする条件を設定して、デバッガーでそれが発生するのを監視し、変数の状態と何が問題であるかを確認できるようにします。

  4. スタックトレースを実行して、最近ヒットしたコールを確認します。これにより、少なくとも最後に実行された関数チェーンがわかります。

于 2012-07-19T15:17:54.450 に答える
0

あなたは出来る

  1. デバッガーを使用する
  2. プログラムにロギング コードを追加する
  3. プログラムが機能し始めるまで、コードのセクションをプログラムから切り取ります

最初から始めます。

于 2012-07-19T15:18:43.310 に答える