web-dev-qa-db-fra.com

Débogage dans Qt Creator à l'aide du compilateur MSVC 2017

J'ai installé Qt, mais des erreurs surviennent lorsque j'essaie de déboguer du code C++ depuis QtCreator. J'utilise Visual Studio 2017 sous Windows et il semble que le débogueur dont QtCreator a besoin (cdb.exe) n'est pas installé. Comment configurer le débogage pour qu'il fonctionne avec du code 64 bits dans QtCreator lors de l'utilisation du compilateur MSVC2017?

(Je réponds à ma propre question selon https://stackoverflow.com/help/self-answer . Postez une meilleure réponse et je changerai la réponse acceptée en votre réponse!)

21
Matthew Kraus

Ce dont je discute ici, c'est de faire travailler QtCreator avec le compilateur Visual Studio 2017 (MSVC2017), y compris le débogage! Une installation par défaut de MSVC2017 et de Qt 5.10 vous permettra de compiler et d’exécuter du code, mais vous ne recevrez pas de support de débogage par défaut. Je vais montrer les étapes nécessaires pour tout installer (y compris le support de débogage) pour le système de référence suivant:

Système de référence

  • Windows 7 SP1 x64 (fonctionne exactement de la même manière avec Win10, également)
  • Visual Studio 2017 (version 15.5.1)
  • Qt 5.10.0
  • Qt Creator 4.5.0 (MSVC 2015, 64 bits)
  • Outils de débogage pour Windows (CDB.exe), qui n'est PAS livré avec Visual Studio 2017
    • via le SDK Windows 10
  • Ciblage des applications Windows Desktop 64 bits

J'ai testé ces étapes sur Windows 10 et Windows 7 (x64) et cela semble fonctionner. Notez que la version de QtCreator fournie avec le programme d'installation de Qt est la version 32 bits et que cela ne fonctionnera pas si vous essayez de déboguer à l'aide de MSVC. Ceci est documenté, mais pas étape par étape (voir débogage Windows par QtCreator et moteurs de débogueur QtCreator ), et tout n'est pas à la même place, je vais donc donnez ici des instructions simples sur la façon de faire fonctionner les choses pour le système de référence que je décris ci-dessus.

Conditions préalables

  • Windows 7 x64 ou Windows 10
  • Visual Studio 2017 (testé avec la version 15.5.1)

En supposant que Win7/Win10 et MSVC2017 soient installés, commençons!

Télécharger Qt

  • Téléchargez le fichier qt-opensource-windows-x86-5.10.0.exe à partir du Qt Official Release Archive
  • Installez avec l'option "msvc2017 64 bits" cochée.
    • toutes les autres cases à cocher ne sont pas nécessaires pour la configuration décrite ici

Qt 5.10 Setup

Installez le SDK Windows pour Windows 10 - https://developer.Microsoft.com/en-us/windows/downloads/sdk-archive

Windows 10 SDK

  • sélectionnez "Outils de débogage pour Windows" et décochez tout le reste

Windows 10 SDK feature selection

  • Le programme d'installation Web téléchargera le composant sélectionné et créera un dossier appelé "Kits Windows".
  • Installez ces deux fichiers (la version x86 est optionnelle):

    • Kits Windows\10\WindowsSDK\Installers\Débogueurs X64 et Tools-x64_en-us.msi
    • Kits Windows\10\WindowsSDK\Installers\Débogueurs X86 et outils-x86_en-us.msi

Win SDK debugger installers

Installez le programme d'installation autonome 64 bits de QtCreator

REMARQUE: si vous installez QtCreator APRÈS l’installation des outils de débogage Windows, QtCreator détectera automatiquement l’emplacement des débogueurs, ce qui vous évitera des tracas lors de la création des kits. Si vous avez déjà installé QtCreator, ne vous inquiétez pas, la configuration des kits dans QtCreator est présentée ci-dessous.

  • Télécharger "Qt Creator 4.5.0 pour Windows 64 bits"

enter image description here

  • cette version semble avoir l'option de sélectionner "Support du débogueur CDB" (introuvable lors de l'installation du package Qt complet dans lequel Qt Creator est intégré)

Qt Creator 4.5.0 (64-bit) setup

Configurer les kits dans QtCreator

Dans le langage ou la terminologie QtCreator, un "Kit" est une combinaison de débogueur + compilateur + version Qt + autres. (En ce sens, le mot "Kit" ne signifie pas la même chose que pour les "Kits Windows" lorsque nous avons installé le débogueur ci-dessus; il s'agit d'une collision de nom malheureuse.) Configurez un "Kit QtCreator" en sélectionnant Outils - > Options -> Construire et exécuter. J'aime commencer par l'onglet tout à droite et travailler à gauche, pour finir sur "Kits". La raison en est que tous les onglets (1,2,3) ci-dessous doivent être configurés afin de créer un kit complet.

QtCreator kit configuration order

Configurer les débogueurs dans QtCreator

  • Définissez le chemin sur C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe et attribuez-lui un nom du type "Window Kit 10 cdb x64".

Debugger Tab in QtCreator

  • Configurez le compilateur. Assurez-vous que "Compilateur Microsoft Visual C++ 15.0 (AMD64)" est dans la liste. Notez que QtCreator détectera automatiquement ces emplacements si vous avez installé des éléments dans les chemins par défaut. Ajoutez le chemin d'accès au compilateur s'il ne figure pas dans la liste.

  • Notez que pour Visual Studio 2017 x64 bits, vous souhaitez la version "AMD64", qui est le compilateur 64 bits. Au cas où vous vous demanderiez pourquoi il y a tant de compilateurs répertoriés - ce sont des "compilateurs croisés". Cela signifie qu'ils ciblent différentes architectures. Ainsi, par exemple, "x86_AMD64" est un processus 32 bits qui crée une application 64 bits. vous utiliseriez cette version si vous développiez du code 64 bits sur un ordinateur 32 bits (d'où le terme de compilation croisée). Puisque ce tutoriel suppose que vous utilisez un système d’exploitation 64 bits, utilisez la version AMD64. (Le compilateur croisé "x86_AMD64" générera également du code 64 bits.) Quand j'ai vu pour la première fois la liste énorme de sélections de compilateurs dans QtCreator, je ne savais pas lequel choisir. Maintenant vous savez aussi! Voir Lors de la compilation du code x64, quelle est la différence entre "x86_AMD64" et "AMD64"? .

cpp-64-bit-compiler

Maintenant, configurez le kit

  1. Cliquez sur Ajouter .
  2. Nom - Indiquez le nom du kit. ce sera la configuration que vous utiliserez lors de la compilation de votre application.
  3. Compilateur - Sélectionnez le "Compilateur Microsoft Visual C++ 15.0 (AMD64)" pour C et C++.
  4. Debugger - Sélectionnez "Windows Kit 10 cdb x64" que nous avons configuré dans l'onglet "Débogueurs".
  5. Version Qt - Sélectionnez "Qt 5.10.0 (msvc2017_64). Il est important de compiler avec le même bit-ness que les bibliothèques Qt que vous lierez contre.
  6. Cliquez sur Appliquer .

Kit Setup in Qt Creator

Vérifier les travaux de débogage

Amusons-nous et écrivons un programme 64 bits, puis corrigez-le. Un bon test consiste à allouer beaucoup de mémoire (les processus Windows 32 bits classiques sont limités à 2 Go, voir Combien de mémoire un processus 32 bits peut-il accéder sur un système d'exploitation 64 bits? ). Allouer, disons, 32 Go de RAM devrait être un indicateur positif de la compilation d'une application 64 bits. Voici une capture d'écran de QtCreator déboguant un programme de test Windows 64 bits:

Debugging 64-bit code in Qt Creator

Notez que j'utilise le compilateur MSVC2017 64 bits et le débogueur CDB.exe mentionné ci-dessus.

#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