これはバグのようです。QtCreatorでは、Q_ASSERT(false)を使用すると、アサーションで中断できるはずだとドキュメントに記載されていても、アプリケーションが終了します。
Windowsでは、デバッグビルドの場合、この関数は_CRT_ERRORを報告し、デバッガーをアプリケーションに接続できるようにします。
Qt Creatorについて:
Qt Creator + MinGWでプロジェクトをコンパイルすると、コードQ_ASSERT(false);
によってプログラムにこのメッセージが表示され(下のスクリーンショット)、その後アプリケーションが終了します。
このアプリケーションは、ランタイムに異常な方法でそれを終了するように要求しました。詳細については、アプリケーションのサポートチームにお問い合わせください。
[アプリケーション出力]ペインには、次のデバッグ出力が表示されます。
ASSERT: "false" in file ..\IntegrateWithQt\main.cpp, line 6
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
Visual Studioの場合:
Visual Studioを使用して同じプロジェクトをコンパイルすると(Qtアドインでインポートします)、はるかに便利な[中止/再試行/無視]ダイアログが表示されます。このダイアログでは、[再試行]をクリックすると、アサーションの場所でプログラムが中断されます。
QtCreatorとVisualStudioの両方でリンクするQtIのバージョンは4.8.1です。どちらのプロジェクトもデバッグモードで構築されています。
では、Qt Creatorを使用して、デバッグモードでアサーションの行を中断できるようにするにはどうすればよいですか?