21

Visual Studio でのデバッグ中に通常の assert ステートメントを実行すると、デバッガーを中断するオプションが表示されるので、アサート メッセージだけでなく、スタック トレース全体とローカル変数を表示できます。

Qt Creator+mingw32 と Q_ASSERT/Q_ASSERT_X でこれを行うことは可能ですか?

4

3 に答える 3

25

それが可能だ。どういうわけか機能が機能しなくなりましたが、基本的には qFatal() で停止する必要があります。これを確実に行うには、qt Creator で [ツール] -> [オプション] -> [デバッガ] -> [GDB] に移動し、[qFatal が発行されたら停止する] を選択します。

于 2012-08-27T23:58:08.913 に答える
8

Qt が発行するメッセージ/警告のハンドラーをインストールして、独自の処理を行うことができます。のドキュメントqInstallMsgHandlerと、そこにある例を参照してください。カスタム メッセージ ハンドラーにブレークを挿入するのは簡単なはずです (実際、その時点で独自にアサートするだけです)。1 つの小さな欠点は、実際にエラーが発生した場所よりもスタックが少し下になることですが、適切なフレームに到達するまでスタックをステップアップするのは簡単なことです。

于 2010-01-21T15:39:44.863 に答える
2

それが可能だ。BreakInDebugger 関数を手作業でコーディングし、関数を呼び出す assert マクロを作成しました。

例えば:#define MyAssert(X) (BreakInDebugger();Q_ASSERT(X))

于 2010-01-21T13:01:46.527 に答える