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

Bets365 📅 2025-09-18 03:49:52 👤 admin 👁️ 2896 👑 578
使用MSVC2017编译器在QtCreator中进行调试

我在这里讨论的是如何使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 Debugging和QtCreator 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-bit”选项进行安装。

对于此处描述的配置,其他所有复选框都不必要

安装适用于 Windows 10 的 Windows SDK

- https://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive

选择"Windows调试工具",并取消其他所有选项

网络安装程序将下载所选组件并创建一个名为“Windows Kits”的文件夹。

安装这两个文件(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

安装64位独立版QtCreator安装程序

注意:如果您在安装Windows调试工具之后安装QtCreator,则QtCreator将自动检测调试器的位置,在创建套件时为您节省麻烦。如果您已经安装了QtCreator,请不用担心,下面将显示如何配置QtCreator中的套件。

下载“Windows 64位Qt Creator 4.5.0”

这个版本似乎有选择"CDB调试器支持"的选项(在安装了捆绑了Qt Creator的完整Qt软件包中找不到)

在QtCreator中配置工具包

在QtCreator的术语中,"Kit"是调试器、编译器、Qt版本等组合。(在这个意义上,当我们安装调试器时,单词"Kit"并不意味着与"Windows Kits"相同;这是一个不幸的名称冲突。)通过选择"工具" -> "选项" -> "构建和运行"来设置"QtCreator Kit"。我喜欢从最右边的选项卡开始,并向左工作,最后结束于"Kits"。原因是所有下面的标签(1,2,3)都需要进行配置才能形成完整的Kit。

在QtCreator中配置调试器

设置路径为C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe,并将其命名为"Window Kit 10 cdb x64"。

设置编译器。确保“Microsoft Visual C++ Compiler 15.0 (amd64)”在列表中。注意,如果您将东西安装到默认路径,则QtCreator将自动检测这些位置。如果未列出编译器的路径,请添加该路径。

请注意,对于Visual Studio 2017 x64位,您需要“amd64”版本,即64位编译器。如果您想知道为什么有这么多编译器列出来--它们是“交叉编译器”。这意味着它们针对不同的架构,因此例如,“x86_amd64”是一个32位进程,创建一个64位应用程序;如果您在32位计算机上开发64位代码(因此术语是交叉编译),则会使用此版本。由于本教程假定您正在运行64位操作系统,请使用amd64版本。(“x86_amd64”交叉编译器也会生成64位代码。)当我第一次看到QtCreator中巨大的编译器选择列表时,我不知道该选哪个。现在你也知道了!请参见编译x64代码时,“x86_amd64”和“amd64”之间有什么区别?。

现在配置套件

点击添加。

名称 - 给出套件的名称;这将是编译应用程序时使用的配置。

编译器 - 选择"C和C++的Microsoft Visual C++ Compiler 15.0 (amd64)"。

调试器 - 选择我们在"调试器"选项卡上配置的"Windows Kit 10 cdb x64"。

Qt版本 - 选择"Qt 5.10.0 (msvc2017_64)"。与您将链接的Qt库具有相同的位数进行编译非常重要。

点击应用。

验证调试工作

让我们写一个64位程序,并对其进行调试。一个好的测试是分配大量内存(典型的32位Windows进程仅限于2GB,请参见32位进程在64位操作系统上可以访问多少内存?)。分配32GB RAM应该是一个肯定的指标,表明我们确实正在编译64位应用程序。这是QtCreator调试64位Windows测试程序的屏幕截图:

请注意,我正在使用MSVC2017 64位编译器和上述提到的CDB.exe调试器。

#include

#include

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

}

皇家推荐

形态各异的意思
快手重名怎么弄 快速了解快手昵称重复及解决方法
朝鲜退赛对国足冲击世界杯不利?中国队恐又遇“出线奥数题”
梅西参加过几回世界杯 4次世界杯之旅 最好成绩率队拿下亚军
假如梅西获得卡塔尔世界杯冠军,2022世界杯梅西还能夺冠吗?
裁判技巧的重要性