web-dev-qa-db-ja.com

MSVC2017コンパイラを使用したQtCreatorでのデバッグ

Qtをインストールしましたが、QtCreator内からC++コードをデバッグしようとするとエラーが発生します。 WindowsでVisual Studio 2017を使用していますが、QtCreatorに必要なデバッガー(cdb.exe)がインストールされていないようです。 MSVC2017コンパイラを使用している場合、QtCreator内で64ビットコードで動作するようにデバッグを構成するにはどうすればよいですか?

https://stackoverflow.com/help/self-answer に従って自分の質問に答えています。より良い答えを投稿してください。受け入れられた答えをあなたのものに変更します!)

21
Matthew Kraus

ここで説明するのは、デバッグを含むVisual Studio 2017(MSVC2017)コンパイラでQtCreatorを動作させることです! MSVC2017およびQt 5.10のデフォルトのインストールでは、コードをコンパイルして実行できますが、デフォルトではデバッグのサポートは得られません。次のリファレンスシステムのすべてをインストールするために必要な手順(デバッグサポートを含む)を示します。

参照システム

  • Windows 7 SP1 x64(Win10でもまったく同じように動作します)
  • Visual Studio 2017(バージョン15.5.1)
  • Qt 5.10.0
  • Qt Creator 4.5.0(MSVC 2015、64ビット)
  • Visual Studio 2017に同梱されていないWindows用デバッグツール(CDB.exe)
    • windows 10 SDK経由
  • Windowsデスクトップ64ビットアプリケーションを対象とする

これらの手順をWindows 10とWindows 7(x64)の両方でテストしましたが、機能しているようです。 QtインストーラーにバンドルされているQtCreatorのバージョンは32ビットバージョンであり、MSVCを使用してデバッグしようとしている場合、そのままでは機能しないことに注意してください。これは文書化されていますが、ステップバイステップではありません( QtCreator Windows Debugging および QtCreator Debugger Engines を参照)、すべてが1か所にあるわけではないので、上記のリファレンスシステムで動作させる方法について簡単な説明をここに記載します。

前提条件

  • Windows 7 x64、またはWindows 10
  • Visual Studio 2017(バージョン15.5.1でテスト済み)

Win7/Win10とMSVC2017がインストールされていると仮定して、始めましょう!

Qtをダウンロード

  • Qt Official Release Archive からファイルqt-opensource-windows-x86-5.10.0.exeをダウンロードします
  • オプション「msvc2017 64-bit」をオンにしてインストールします。
    • ここで説明する構成では、他のすべてのチェックボックスは不要です。

Qt 5.10 Setup

Windows 10用のWindows SDKをインストールします- https://developer.Microsoft.com/en-us/windows/downloads/sdk-archive

Windows 10 SDK

  • 「Debugging Tools for Windows」を選択し、他のすべてのチェックを外します

Windows 10 SDK feature selection

  • Webインストーラーは、選択したコンポーネントをダウンロードし、「Windows Kits」というフォルダーを作成します。
  • 次の2つのファイルをインストールします(x86バージョンはオプションです)。

    • Windows Kits\10\WindowsSDK\Installers\X64 Debuggers And Tools-x64_en-us.msi
    • Windows Kits\10\WindowsSDK\Installers\X86 Debuggers And Tools-x86_en-us.msi

Win SDK debugger installers

QtCreator用の64ビットSTAND-ALONEインストーラーをインストールします

注:Windowsデバッグツールのインストール後にQtCreatorをインストールすると、QtCreatorはデバッガーの場所を自動的に検出し、キットを作成する際の手間を省きます。すでにQtCreatorをインストールしている場合は、心配しないでください。QtCreatorでキットを構成する方法を以下に示します。

  • 「Qt Creator 4.5.0 for Windows 64-bit」をダウンロードしてください

enter image description here

  • このバージョンには、「CDB Debugger Support」を選択するオプションがあるようです(Qt Creatorがバンドルされている完全なQtパッケージをインストールする場合は見つかりません)

Qt Creator 4.5.0 (64-bit) setup

QtCreatorでキットを構成する

QtCreatorの用語または用語では、「キット」はデバッガ+コンパイラ+ Qtバージョン+その他の組み合わせです。 (この意味で、「Kit」という言葉は、上記のデバッガーをインストールしたときの「Windows Kits」と同じ意味ではありません。これは残念な名前の衝突です。)「ツール」を選択して「QtCreator Kit」をセットアップします- >オプション->ビルドと実行。私は右端のタブから始めて左に進み、「キット」で終わるのが好きです。これは、完全なキットを作成するために、以下のすべてのタブ(1,2,3)を構成する必要があるためです。

QtCreator kit configuration order

QtCreatorでデバッガーを構成する

  • パスをC:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exeに設定し、「Window Kit 10 cdb x64」のような名前を付けます。

Debugger Tab in QtCreator

  • コンパイラーをセットアップします。 「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」の違いは何ですか? を参照してください。

cpp-64-bit-compiler

キットを構成します

  1. Addをクリックします。
  2. Name-キットの名前を指定します;これは、アプリケーションのコンパイル時に使用する構成になります。
  3. Compiler-CおよびC++の場合、「Microsoft Visual C++ Compiler 15.0(AMD64)」を選択します。
  4. Debugger-「Debuggers」タブで設定した「Windows Kit 10 cdb x64」を選択します
  5. Qtバージョン-「Qt 5.10.0(msvc2017_64)」を選択します。リンクするQtライブラリと同じビット数でコンパイルすることが重要ですに対して。
  6. 適用をクリックします。

Kit Setup in Qt Creator

デバッグの動作を確認する

64ビットプログラムを作成してデバッグしてみましょう。適切なテストは、大量のメモリを割り当てることです(通常の32ビットWindowsプロセスは2GBに制限されています。 64ビットオペレーティングシステムで32ビットプロセスがアクセスできるメモリ量 を参照)。たとえば、32GBのRAMを割り当てることは、64ビットアプリケーションを実際にコンパイルしていることを示す肯定的な指標となるはずです。64ビットWindowsテストプログラムをデバッグするQtCreatorのスクリーンショットは次のとおりです。

Debugging 64-bit code in Qt Creator

上記の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();
}
39
Matthew Kraus