Qtをインストールしましたが、QtCreator内からC++コードをデバッグしようとするとエラーが発生します。 WindowsでVisual Studio 2017を使用していますが、QtCreatorに必要なデバッガー(cdb.exe)がインストールされていないようです。 MSVC2017コンパイラを使用している場合、QtCreator内で64ビットコードで動作するようにデバッグを構成するにはどうすればよいですか?
( https://stackoverflow.com/help/self-answer に従って自分の質問に答えています。より良い答えを投稿してください。受け入れられた答えをあなたのものに変更します!)
ここで説明するのは、デバッグを含むVisual Studio 2017(MSVC2017)コンパイラでQtCreatorを動作させることです! MSVC2017およびQt 5.10のデフォルトのインストールでは、コードをコンパイルして実行できますが、デフォルトではデバッグのサポートは得られません。次のリファレンスシステムのすべてをインストールするために必要な手順(デバッグサポートを含む)を示します。
これらの手順をWindows 10とWindows 7(x64)の両方でテストしましたが、機能しているようです。 QtインストーラーにバンドルされているQtCreatorのバージョンは32ビットバージョンであり、MSVCを使用してデバッグしようとしている場合、そのままでは機能しないことに注意してください。これは文書化されていますが、ステップバイステップではありません( QtCreator Windows Debugging および QtCreator Debugger Engines を参照)、すべてが1か所にあるわけではないので、上記のリファレンスシステムで動作させる方法について簡単な説明をここに記載します。
Win7/Win10とMSVC2017がインストールされていると仮定して、始めましょう!
Windows 10用のWindows SDKをインストールします- https://developer.Microsoft.com/en-us/windows/downloads/sdk-archive
次の2つのファイルをインストールします(x86バージョンはオプションです)。
注:Windowsデバッグツールのインストール後にQtCreatorをインストールすると、QtCreatorはデバッガーの場所を自動的に検出し、キットを作成する際の手間を省きます。すでにQtCreatorをインストールしている場合は、心配しないでください。QtCreatorでキットを構成する方法を以下に示します。
QtCreatorの用語または用語では、「キット」はデバッガ+コンパイラ+ Qtバージョン+その他の組み合わせです。 (この意味で、「Kit」という言葉は、上記のデバッガーをインストールしたときの「Windows Kits」と同じ意味ではありません。これは残念な名前の衝突です。)「ツール」を選択して「QtCreator Kit」をセットアップします- >オプション->ビルドと実行。私は右端のタブから始めて左に進み、「キット」で終わるのが好きです。これは、完全なキットを作成するために、以下のすべてのタブ(1,2,3)を構成する必要があるためです。
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe
に設定し、「Window Kit 10 cdb x64」のような名前を付けます。コンパイラーをセットアップします。 「Microsoft Visual C++ Compiler 15.0(AMD64)」がリストにあることを確認してください。デフォルトのパスにインストールした場合、QtCreatorはこれらの場所を自動検出することに注意してください。リストされていない場合は、コンパイラへのパスを追加します。
Visual Studio 2017 x64ビットの場合、64ビットコンパイラーである「AMD64」バージョンが必要です。なぜ非常に多くのコンパイラがリストされているのか疑問に思っている場合のために、それらは「クロスコンパイラ」です。つまり、異なるアーキテクチャを対象としているため、たとえば、「x86_AMD64」は64ビットアプリケーションを作成する32ビットプロセスです。 32ビットコンピューターで64ビットコードを開発している場合は、このバージョンを使用します(クロスコンパイルという用語)。このチュートリアルでは、64ビットOSで実行していることを前提としているため、AMD64バージョンを使用してください。 ( "x86_AMD64"クロスコンパイラーは64ビットコードも生成します。)QtCreatorでコンパイラー選択の膨大なリストを最初に見たとき、どれを選択するかわかりませんでした。今、あなたも知っています! x64コードをコンパイルする場合、「x86_AMD64」と「AMD64」の違いは何ですか? を参照してください。
64ビットプログラムを作成してデバッグしてみましょう。適切なテストは、大量のメモリを割り当てることです(通常の32ビットWindowsプロセスは2GBに制限されています。 64ビットオペレーティングシステムで32ビットプロセスがアクセスできるメモリ量 を参照)。たとえば、32GBのRAMを割り当てることは、64ビットアプリケーションを実際にコンパイルしていることを示す肯定的な指標となるはずです。64ビットWindowsテストプログラムをデバッグするQtCreatorのスクリーンショットは次のとおりです。
上記のMSVC2017 64ビットコンパイラとCDB.exeデバッガを使用していることに注意してください。
#include <QCoreApplication>
#include <cassert>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int intSize = sizeof(int);
assert(intSize == 4);
int intPtrSize = sizeof(int*);
assert(intPtrSize == 8);
constexpr size_t giga = 1000 * 1000 * 1000;
size_t _32gigs = 32 * giga / intSize;
int* gigaChunk = new int[_32gigs];
assert(gigaChunk != nullptr);
return a.exec();
}