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!)
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:
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.
En supposant que Win7/Win10 et MSVC2017 soient installés, commençons!
Installez le SDK Windows pour Windows 10 - https://developer.Microsoft.com/en-us/windows/downloads/sdk-archive
Installez ces deux fichiers (la version x86 est optionnelle):
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.
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.
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe
et attribuez-lui un nom du type "Window Kit 10 cdb x64".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"? .
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:
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();
}