2

私は通常、C++ のニーズに合わせて Qt Creator を使用しています。プログラムのアサーションが失敗すると、どのアサーションが失敗したかを表示できます。Visual Studio では、これだけが表示されます。

アサーションの失敗

[再試行] をクリックしてアプリケーションにジャンプできますが、どのアサーションが失敗したかはわかりません。単純なassert(false)Visual Studioでも、利用できないmsvcr100d.dllのソース コードを表示しようとします。

プログラム内のどのアサーションが失敗したかを調べるにはどうすればよいですか? std::cout自動的に追跡できるものに対して、ブレークポイントと s を組み合わせて使用​​する面倒な手動検索は本当にしたくありません。

編集: Visual Studio は実際に.PDBファイルを生成しましたが、まだ機能していません。デバッガーはアサーションが失敗した行を強調表示しませんが、コマンド ラインにAssertion failed: false, file main.cpp, line 8が表示されます。行を表示して、変数を調べさせないのはなぜですか? つまり、すべての情報が利用可能のようです...

4

1 に答える 1

6

「再試行」をクリックするだけで、デバッガーでアプリケーションのソース コードに侵入できます。これにより、失敗したアサーションを含む行が強調表示されるため、ネストされた複数のアサーションを 1 行に詰め込みたい場合を除き、原因を簡単に確認できます。もしそうなら、あなたはこれがあなたに引き起こすかもしれないすべての痛みに値します.

現在動作していない理由は、アプリケーションの現在のビルドから利用できるデバッグ シンボルがないためです。Visual Studio にバンドルされているコンパイラを使用してアプリをビルドすると、プロジェクトの設定に応じて.PDB、デバッグ シンボルを含むファイルが生成されます。これらは、最後のエラーを生成した行など、デバッグ中に有用な情報を取得するために必要です。

アプリケーションをコンパイルするときは、デバッグ シンボルを生成するように設定してください。.PDB/bin ディレクトリにファイルが表示されるはずです。hereで説明されているように、デバッグ シンボルの生成は、最適化が有効になっているかどうか (通常は「リリース」と呼ばれる構成) とは関係ありません。

更新:おそらく Qt Creator でアプリをコンパイル/ビルドしてから、Visual Studio からバイナリをデバッグしようとしていることに気付きました。VS のツールを使用してコンパイルしないと、VS デバッガーが読み取れるデバッグ シンボルが生成されません。

問題は逆でも同じだと思います。Visual Studio でビルドしてから Qt Creator でデバッグしようとすると、デバッグ シンボルも解釈できない可能性があります。

したがって、ビルドには単一のツールセットを使用することをお勧めします。使用する IDE は関係ありませんが、同じツールでコンパイル/ビルドする必要があります。バンドルされているコンパイラとリンカーを使用するように、Qt Creator または Visual Studio のいずれかを構成できます。通常、Qt Creator には GCC の Win32 ポートが付属していますが、代わりに Microsoft のツールセットを使用してビルドするのは簡単です。これにより、VS を使用してコードをデバッグできます。

于 2012-05-25T09:26:04.227 に答える