16

私は現在、いくつかの奇妙な例外に苦しんでいます。これは、opencv との対話中に何か間違ったことをしたことが原因である可能性が最も高いです。

First-chance exception at 0x7580b9bc in xxx.exe: Microsoft C++ exception: cv::Exception at memory location 0x00c1c624..

Thrownメニューでフィールドを既に有効にしましたDebug -> Exceptionsが、コードのどこで例外がスローされているのか本当にわかりません。

どうすればこれをデバッグできますか?

スタック フレームを次のように編集 します (私のアプリはリストに表示されません!):

  • KernelBase.dll!7580b8bc()
  • [以下のフレームは間違っているか、欠落している可能性があります]
  • KernelBase.dll!7580b8bc()
  • opencv_core242d.dll!54eb60cc()
4

3 に答える 3

20

例外の詳細を出力する try catch ブロックでメイン全体をラップできます。オープン CV API が例外をスローする可能性がある場合は、設計の一部として例外を処理することを検討する必要があります。

try
{
  // ... Contents of your main
}
catch ( cv::Exception & e )
{
 cerr << e.msg << endl; // output exception message
}
于 2012-10-02T09:59:17.277 に答える
5

OpenCV には、cv::setBreakOnErrorという便利な関数があります。

opencv 呼び出しの前に以下をメインに入れると:

cv::setBreakOnError(true);

cv::Exception が正常にスローされる直前に、OpenCV が無効な操作 (null ポインターの逆参照) を実行するため、プログラムがクラッシュします。コードをデバッガーで実行すると、この不正な操作で停止し、エラー発生時のすべてのコードと変数を含むコール スタック全体を確認できます。

于 2015-12-12T12:45:39.883 に答える