使用MSVC2017编译器在QtCreator中进行调试

时间:2017-12-12 12:59:59

标签: c++ qt debugging visual-studio-2017 qt-creator

我已经安装了Qt,但是在尝试从QtCreator中调试C ++代码时遇到了错误。我在Windows上使用Visual Studio 2017,似乎没有安装QtCreator需要的调试器(cdb.exe)。在使用MSVC2017编译器时,如何配置调试以在QtCreator中使用64位代码?

(我根据https://stackoverflow.com/help/self-answer回答了我自己的问题。发布一个更好的答案,我会改变你接受的答案!)

1 个答案:

答案 0 :(得分:37)

我在这里讨论的是让QtCreator使用Visual Studio 2017(MSVC2017)编译器 - 包括调试!默认安装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位)
  • Windows调试工具(CDB.exe),不随Visual Studio 2017提供
    • 通过Windows 10 SDK
  • 定位Windows桌面64位应用程序

我已经在Windows 10和Windows 7(x64)上测试了这些步骤,它似乎正在运行。请注意,与Qt安装程序捆绑在一起的QtCreator版本是32位版本,如果您尝试使用MSVC进行调试,它将无法开箱即用。这是记录在案的,但不是一步一步的(请参阅QtCreator Windows DebuggingQtCreator Debugger Engines),而不是所有内容都在一个地方,因此我将在此处提供有关如何获取的简单说明我在上面描述的参考系统工作的东西。

先决条件

  • 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位"检查。
    • 此处描述的配置不需要所有其他复选框

Qt 5.10 Setup

安装适用于Windows 10的Windows SDK      - https://developer.microsoft.com/en-us/windows/downloads/sdk-archive

Windows 10 SDK

  • 选择" Windows调试工具"并取消选中其他所有内容

Windows 10 SDK feature selection

  • 网络安装程序将下载所选组件并创建名为" Windows套件的文件夹。"
  • 安装这两个文件(x86版本是可选的):

    • Windows Kits \ 10 \ WindowsSDK \ Installers \ X64调试器和工具-x64_en-us.msi
    • Windows Kits \ 10 \ WindowsSDK \ Installers \ X86调试器和工具-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调试器支持" (在安装捆绑了Qt Creator的完整Qt软件包时找不到)

Qt Creator 4.5.0 (64-bit) setup

在QtCreator中配置套件

在QtCreator用语或术语中," Kit"是调试器+编译器+ Qt版本+其他的组合。 (在这个意义上,单词" Kit"并不意味着和#34; Windows Kits"当我们在上面安装调试器时这是一样的;这是一个不幸的名称冲突。)一个" QtCreator Kit"通过选择工具 - >选项 - >建设与发展跑。我喜欢从最右边的标签开始,向左侧工作,结束于"套件。"原因是需要配置下面的所有标签(1,2,3)才能制作完整的套件。

QtCreator kit configuration order

在QtCreator中配置调试器<​​/ h1>
  • 将路径设置为C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe,并为其命名为&#34; Window Kit 10 cdb x64&#34;。

Debugger Tab in QtCreator

  • 设置编译器。确保&#34; Microsoft Visual C ++编译器15.0(amd64)&#34;在列表中。请注意,如果您已将内容安装到默认路径,QtCreator将自动检测这些位置。如果没有列出编译器,请添加路径。

  • 请注意,对于Visual Studio 2017 x64位,您需要&#34; amd64&#34;版本,这是64位编译器。如果你想知道为什么列出这么多的编译器 - 它们是#34;交叉编译器。&#34;这意味着他们针对不同的架构,例如,&#34; x86_amd64&#34;是一个32位进程,创建一个64位应用程序;如果您在32位计算机上开发64位代码(因此称为交叉编译),您将使用此版本。由于本教程假定您在64位操作系统上运行,因此请使用amd64版本。 (&#34; x86_amd64&#34;交叉编译器也将生成64位代码。)当我第一次看到QtCreator中的巨大编译器选择列表时,我并不知道要选择哪一个。现在你也知道了!请参阅When compiling x64 code, what's the difference between "x86_amd64" and "amd64"?

cpp-64-bit-compiler

现在配置套件

  1. 点击添加
  2. 名称 - 提供套件的名称;这将是您在编译应用程序时使用的配置。
  3. 编译器 - 选择&#34; Microsoft Visual C ++编译器15.0(amd64)&#34;用于C和C ++。
  4. 调试程序 - 选择&#34; Windows Kit 10 cdb x64&#34;我们在&#34; Debuggers&#34;上配置了标签
  5. Qt版 - 选择&#34; Qt 5.10.0(msvc2017_64)。使用与要链接的Qt库相同的位编译非常重要。
  6. 点击应用
  7. Kit Setup in Qt Creator

    验证调试是否有效

    让我们有一些乐趣并编写一个64位程序,然后进行调试。一个好的测试是分配大量内存(典型的32位Windows进程限制为2GB,请参阅How much memory can a 32 bit process access on a 64 bit operating system?)。例如,分配32GB的RAM应该是一个积极的指标,我们确实在编译64位应用程序。以下是QtCreator调试64位Windows测试程序的屏幕截图:

    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();
    }