私はC++ソフトウェア画像処理ツールを書いています.ツールは正常に動作しますが、突然停止し、例外やクラッシュを送信したり、クラッシュした行や領域を知らせたりすることはありません.
その状況でその欠陥のあるコードをどのように判断できますか?
できることがいくつかあります。
まず第一に、それは無限ループ、デッドロック、またはすべてのシステムリソースを使用しているように聞こえ、速度が低下し、非常に(場合によっては無限に)長い時間がかかります。その場合は、デバッグで見つける必要があります。
あなたが試すことができること-必ずしもこの順序である必要はありません:
使用している共有変数を探します。スレッドとミューテックスでデッドロックが発生する可能性はありますか?それについて考えて、それを修正してみてください。
初期化されていない変数/ポインタの使用を確認してください。未定義の動作を呼び出すと、(まれに)非常に奇妙な動作が発生することがあります。私はWindows C ++開発者ではありません(Linuxで作業しています)が、セグメンテーション違反によるロックアップを初めて見たわけではありません。
エラー出力(std :: cerr / stderror)を処理ロジックに追加して、どこまでクラッシュするかを確認できるようにします。その後、その時点でそれをキャッチする条件を設定して、デバッガーでそれが発生するのを監視し、変数の状態と何が問題であるかを確認できるようにします。
スタックトレースを実行して、最近ヒットしたコールを確認します。これにより、少なくとも最後に実行された関数チェーンがわかります。
あなたは出来る
最初から始めます。