webentwicklung-frage-antwort-db.com.de

Debuggen in QtCreator mit dem MSVC2017-Compiler

Ich habe Qt installiert, bekomme aber Fehler, wenn ich versuche, C++ - Code in QtCreator zu debuggen. Ich verwende Visual Studio 2017 unter Windows und es scheint, dass der von QtCreator benötigte Debugger (cdb.exe) nicht installiert ist. Wie kann ich das Debuggen für 64-Bit-Code in QtCreator konfigurieren, wenn ich den MSVC2017-Compiler verwende?

(Ich beantworte meine eigene Frage gemäß https://stackoverflow.com/help/self-answer . Schreibe eine bessere Antwort und ich ändere die akzeptierte Antwort auf deine!)

21
Matthew Kraus

Was ich hier diskutiere, ist, QtCreator mit dem Compiler von Visual Studio 2017 (MSVC2017) zum Laufen zu bringen - einschließlich Debuggen! Bei einer Standardinstallation von MSVC2017 und Qt 5.10 können Sie Code kompilieren und ausführen, aber standardmäßig erhalten Sie keine Unterstützung für das Debuggen. Ich werde die notwendigen Schritte zeigen, um alles zu installieren (einschließlich Debugging-Unterstützung) für das folgende Referenzsystem:

Referenzsystem

  • Windows 7 SP1 x64 (funktioniert auch mit Win10 genauso)
  • Visual Studio 2017 (Version 15.5.1)
  • Qt 5.10.0
  • Qt Creator 4.5.0 (MSVC 2015, 64-Bit)
  • Debugging-Tools für Windows (CDB.exe), die NICHT im Lieferumfang von Visual Studio 2017 enthalten sind
    • über Windows 10 SDK
  • Targeting von Windows Desktop 64-Bit-Anwendungen

Ich habe diese Schritte sowohl unter Windows 10 als auch unter Windows 7 (x64) getestet und es scheint zu funktionieren. Beachten Sie, dass die mit dem Qt-Installationsprogramm gelieferte Version von QtCreator die 32-Bit-Version ist und nicht sofort funktioniert, wenn Sie versuchen, das Debuggen mit MSVC durchzuführen. Dies ist dokumentiert, aber nicht schrittweise (siehe QtCreator Windows Debugging und QtCreator Debugger Engines ), und nicht alles befindet sich an einem Ort Hier finden Sie einfache Anweisungen, wie Sie das oben beschriebene Referenzsystem zum Laufen bringen.

Voraussetzungen

  • Windows 7 x64 oder Windows 10
  • Visual Studio 2017 (getestet mit Version 15.5.1)

Angenommen, Sie haben Win7/Win10 und MSVC2017 installiert, fangen wir an!

Laden Sie Qt

  • Laden Sie die Datei qt-opensource-windows-x86-5.10.0.exe aus dem Qt Official Release Archive herunter
  • Installieren Sie mit aktivierter Option "msvc2017 64-bit".
    • alle anderen Kontrollkästchen sind für die hier beschriebene Konfiguration nicht erforderlich

Qt 5.10 Setup

Installieren Sie das Windows SDK für Windows 10 - https://developer.Microsoft.com/en-us/windows/downloads/sdk-archive

Windows 10 SDK

  • wählen Sie "Debugging Tools for Windows" und deaktivieren Sie alles andere

Windows 10 SDK feature selection

  • Das Web-Installationsprogramm lädt die ausgewählte Komponente herunter und erstellt einen Ordner mit dem Namen "Windows Kits".
  • Installieren Sie diese beiden Dateien (die x86-Version ist optional):

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

Win SDK debugger installers

Installieren Sie das 64-Bit-STAND-ALONE-Installationsprogramm für QtCreator

HINWEIS: Wenn Sie QtCreator NACH der Installation der Windows-Debugging-Tools installieren, erkennt QtCreator automatisch die Position der Debugger und erspart Ihnen so den Aufwand beim Erstellen der Kits. Wenn Sie QtCreator bereits installiert haben, können Sie die Kits in QtCreator wie folgt konfigurieren.

  • Download "Qt Creator 4.5.0 für Windows 64-Bit"

enter image description here

  • diese Version scheint die Option zu haben, "CDB-Debugger-Unterstützung" auszuwählen (nicht gefunden, wenn das vollständige Qt-Paket installiert wird, in dem Qt Creator enthalten ist).

Qt Creator 4.5.0 (64-bit) setup

Kits in QtCreator konfigurieren

In der Sprache oder Terminologie von QtCreator ist ein "Kit" eine Kombination aus Debugger + Compiler + Qt-Version + anderen. (In diesem Sinne bedeutet das Wort "Kit" nicht dasselbe wie für "Windows Kits", als wir den obigen Debugger installiert haben. Dies ist eine unglückliche Namenskollision.) Richten Sie ein "QtCreator Kit" ein, indem Sie Extras - wählen. > Optionen -> Build Run. Ich beginne gerne ganz rechts und arbeite nach links, bis ich zu "Kits" komme. Der Grund dafür ist, dass alle Registerkarten (1, 2, 3) unten konfiguriert werden müssen, um ein vollständiges Kit zu erstellen.

QtCreator kit configuration order

Konfigurieren Sie Debugger in QtCreator

  • Setzen Sie den Pfad auf C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe und geben Sie ihm einen Namen wie "Window Kit 10 cdb x64".

Debugger Tab in QtCreator

  • Richten Sie den Compiler ein. Stellen Sie sicher, dass "Microsoft Visual C++ Compiler 15.0 (AMD64)" in der Liste enthalten ist. Beachten Sie, dass QtCreator diese Speicherorte automatisch erkennt, wenn Sie die Standardpfade verwendet haben. Fügen Sie den Pfad zum Compiler hinzu, wenn er nicht aufgeführt ist.

  • Beachten Sie, dass Sie für Visual Studio 2017 x64-Bit die "AMD64" -Version benötigen, bei der es sich um den 64-Bit-Compiler handelt. Falls Sie sich fragen, warum so viele Compiler aufgelistet sind - sie sind "Cross-Compiler". Das heißt, sie richten sich an unterschiedliche Architekturen. So ist beispielsweise "x86_AMD64" ein 32-Bit-Prozess, der eine 64-Bit-Anwendung erstellt. Sie würden diese Version verwenden, wenn Sie 64-Bit-Code auf einem 32-Bit-Computer entwickeln würden (daher der Begriff Cross-Compiling). Da in diesem Lernprogramm davon ausgegangen wird, dass Sie ein 64-Bit-Betriebssystem verwenden, verwenden Sie die AMD64-Version. (Der Cross-Compiler "x86_AMD64" generiert auch 64-Bit-Code.) Als ich zum ersten Mal die riesige Liste der Compiler-Auswahlen in QtCreator sah, wusste ich nicht, welche ich auswählen sollte. Jetzt weißt du es auch! Siehe Was ist der Unterschied zwischen "x86_AMD64" und "AMD64" beim Kompilieren von x64-Code? .

cpp-64-bit-compiler

Konfigurieren Sie nun das Kit

  1. Klicken Sie auf Hinzufügen .
  2. Name - Geben Sie den Namen des Kits an; Dies ist die Konfiguration, die Sie beim Kompilieren Ihrer Anwendung verwenden.
  3. Compiler - Wählen Sie "Microsoft Visual C++ Compiler 15.0 (AMD64)" für C und C++.
  4. Debugger - Wählen Sie "Windows Kit 10 cdb x64", das wir auf der Registerkarte "Debugger" konfiguriert haben
  5. Qt-Version - Wählen Sie "Qt 5.10.0 (msvc2017_64)". Es ist wichtig, dass Sie mit derselben Bit-Ness kompilieren wie die Qt-Bibliotheken, die Sie verknüpfen gegen.
  6. Klicken Sie auf Übernehmen .

Kit Setup in Qt Creator

Überprüfen Sie, ob das Debuggen funktioniert

Lassen Sie uns Spaß haben und ein 64-Bit-Programm schreiben und es dann debuggen. Ein guter Test besteht darin, viel Speicher zuzuweisen (typische 32-Bit-Windows-Prozesse sind auf 2 GB beschränkt, siehe Wie viel Speicher kann ein 32-Bit-Prozess auf einem 64-Bit-Betriebssystem verwenden? ). Das Zuweisen von beispielsweise 32 GB RAM sollte ein positiver Indikator dafür sein, dass wir tatsächlich eine 64-Bit-Anwendung kompilieren. Hier ein Screenshot von QtCreator, der ein 64-Bit-Windows-Testprogramm debuggt:

Debugging 64-bit code in Qt Creator

Beachten Sie, dass ich den 64-Bit-Compiler MSVC2017 und den oben genannten Debugger CDB.exe verwende.

#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