0

Windows 7 でクラッシュしてこのエラーを生成する C CLI プログラムがあります。

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

まず、ステートメントのトリガーが原因である可能性があることをどこかで読んだassertので、最初の対策として、それらを if ステートメントに置き換えて、失敗した可能性のあるアサートをキャッチしてログに記録しました。printf次に、プログラムが終了する場所を確認するステートメントをコードにスプレーしました。3 番目に、最初に終了をログに記録しない限り、コードがどこにも終了しないように特に注意しました。プログラムはスレッド化されているため、かなりの数の処理が行われていますが、それほど複雑なことはありません。

問題は、2回目にエラーが発生したときに、プログラムがprintfステートメントの外で終了したことを示したため、どこで終了したかがわからないことです。

2つの質問:

  1. 出口に関する詳細を確認するには、適切なデバッガーを使用する必要があると思います。
  2. ステートメント以外に、この種のエラーに関するその他の落とし穴はありますassertか? このエラーに関するブログ エントリはかなりありC++ますが、それほど多くはありませんC

Visual C++ 2008 Express Edition を使用しています。また、 でプログラムを呼び出していCMD.exeます。

4

2 に答える 2

1

まず第一に、assert通常、プログラマーが立てた仮定が成り立たないケースを追跡するのに役立つことを意図した呼び出しを削除しましたか? 本当に?うーん...

第二に、デバッガーに精通していますか? Visual C++ には、プログラムがデバッグ モードで実行されているときに、プロセスが終了した場所を示すだけでなくプログラムがクラッシュした正確な場所、その時点に到達した方法、およびクラッシュ時の変数。想像してみろ!

この記事では主に C# について説明しますが、原則は同じです。

于 2013-04-26T05:55:37.937 に答える