C++ 调试配置的项目设置

你可以在“属性页”对话框中更改 C 或 Visual C++ 调试配置的项目设置,相关讨论见如何:设置调试和发布配置。 下表显示“属性页”对话框中与调试器有关的设置的位置。

注意

“配置属性/调试”类别中的调试项目设置与 UWP 应用和用 C++ 编写的组件的调试项目设置不同。 请参阅启动调试会话(VB、C#、C++ 和 XAML)

每当你保存解决方案时,每个调试属性设置均自动写入并保存到解决方案的“每用户”文件 (.vcxproj.user) 中。

如下表所述,在“要启动的调试器”列表框中指定要使用的调试器。 您的选择将影响属性的可见性。

“配置属性”文件夹(“调试”类别)

设置 说明
要启动的调试器 指定要运行的调试器,有以下选择:

- 本地 Windows 调试器
- 远程 Windows 调试器
- Web 浏览器调试器
- Web 服务调试器
命令(本地 Windows 调试器) 指定在本地计算机上用于启动要调试程序的命令。
远程命令(远程 Windows 调试器) 远程计算机上的 .exe 的路径。 可以像在远程计算机上一样输入路径。
命令参数(本地 Windows 调试器)

远程命令参数(远程 Windows 调试器)
- 为前面指定的命令指定自变量。

可以在此框中使用下列重定向运算符:

< file
从文件中读取 stdin。

> file
将 stdout 写入文件。

>> file
将 stdout 追加到文件中。

2>file
将 stderr 写入文件。

2>>file
将 stderr 追加到文件中。

2> &1
将 stderr (2) 输出发送到与 stdout (1) 相同的位置。

1> &2
将 stdout (1) 输出发送到与 stderr (2) 相同的位置。

在大多数情况下,这些运算符仅适用于控制台应用程序。

如果需要在命令中转义字符,可以使用 ASCII 值(如 %25)替换 %。 如果使用“开始调试”命令,则双引号将转义上述命令(如“<”)来替换 <。
工作目录 指定要调试的程序的工作目录(相对于 EXE 所在的项目目录)。 如果将此设置保留为空,则工作目录将为项目目录。 对于远程调试,项目目录位于远程服务器上。
附加(本地 Windows 调试器和远程 Windows 调试器) 指定是启动应用程序还是附加到应用程序。 默认设置为“否”。
远程服务器名称(远程 Windows 调试器) 指定您要在其上调试应用程序的计算机(不是您的计算机)的名称。

RemoteMachine 生成宏被设置为此属性的值;有关详细信息,请参阅用于生成命令和属性的宏
连接(远程 Windows 调试器) 允许您在远程调试的标准与非身份验证连接类型之间切换。 在“远程服务器名称”框中指定远程计算机的名称。 连接类型包括:

- 带 Windows 身份验证的远程访问
- 不带身份验证的远程访问

注意:不带身份验证的远程调试可能会使远程计算机容易受到安全侵犯。 Windows 身份验证模式更安全。

有关详细信息,请参阅远程调试安装
HTTP URL(Web 服务调试器和 Web 浏览器调试器) 指定您要调试的项目所在的 URL。
调试器类型 指定要使用的调试器的类型:“仅限本机”、“仅限托管”、“仅限 GPU”、“混合”、“自动”(默认)或“脚本”。

- “仅限本机”用于非托管 C++ 代码。
- “仅限托管”适用于在公共语言运行时下运行的代码(托管代码)。
- “混合”对托管代码和非托管代码都调用调试器。
- “自动”将根据编译器和 EXE 信息确定调试器类型。
- “脚本”调用脚本调试器。
- “仅限 GPU”用于在 GPU 设备或 DirectX 参考光栅器上运行的 C++ AMP 代码。 请参阅调试 GPU 代码
环境(本地 Windows 调试器和远程 Windows 调试器) 为要调试的程序指定环境变量。 使用标准环境变量语法(例如,PATH="%SystemRoot%\...")。 根据“合并环境”设置的不同,这些变量将重写系统环境或与系统环境合并。 在右侧列中单击时,会出现“编辑...”。 选择该链接以打开属性编辑器并编辑环境变量。 若要添加多个环境变量,请使用属性编辑器并为每个行添加一个变量。
合并环境(本地 Windows 调试器) 确定在“环境”框中指定的变量是否与操作系统定义的环境合并。 默认设置为“是”。
SQL 调试(除 MPI 群集调试器外的所有调试器) 启用 Visual C++ 应用程序中的 SQL 过程的调试。 默认设置为“否”。
调试加速器类型(仅限 GPU 调试) 指定要用于调试的 GPU 设备。 为兼容的 GPU 设备安装设备驱动器将添加其他选项。 默认设置为“GPU - 软件仿真程序”。
GPU 默认断点行为(仅限 GPU 调试) 指定是否应为 SIMD 经线中的每个线程引发断点事件。 默认设置是仅每次换行引发一次断点事件。
Amp 默认快捷键 在调试 GPU 代码时,指定默认 AMP 快捷键。 如果问题是由硬件或驱动程序导致,而非你的代码导致,请选择“WARP 软件快捷键”进行调查。
部署目录(远程 Windows 调试器) 指定项目输出在启动前要被复制的远程计算机上的路径。 路径可以是远程计算机上的网络共享,也可以是到远程计算机上的文件夹的路径。 默认设置为空,这意味着项目输出未复制到网络共享。 若要启用文件的部署,还必须在“配置管理器”对话框中选中“部署”复选框。 有关详细信息,请参阅如何:创建和编辑配置
其他要部署的文件(远程 Windows 调试器) 如果“部署目录”属性已设置,则它是一个要复制到部署目录中的额外文件夹或文件的分号分隔的列表。 默认设置为空,这意味着不会将额外文件夹或文件复制到部署目录中。 若要将文件夹的内容复制到部署目录中的同一文件夹,请指定文件夹名称。 若要启用文件的部署,还必须在“配置管理器”对话框中选中“部署”复选框。 有关详细信息,请参阅如何:创建和编辑配置
部署 Visual C++ 调试运行库(远程 Windows 调试器) 如果“部署目录”属性已设置,则它可以指定当前平台的 Visual C++ 调试运行库是否应被复制到网络共享中。 默认设置为“是”。

“C/C++”文件夹(“常规”类别)

设置 描述
调试信息格式(/Z7、/Zd、/Zi、/ZI) 指定要为项目创建的调试信息类型。

默认选项 (/ZI) 以“编辑并继续”的兼容格式创建程序数据库 (PDB)。 有关详细信息,请参阅 /Z7、/Zd、/Zi、/ZI(调试信息格式)

“C/C++”文件夹(“优化”类别)

设置 描述
优化 指定编译器是否应优化其生成的代码。 优化过程将更改执行的代码。 经过优化的代码不再与源代码匹配,这使得调试更加困难。

默认选项(“禁用(/0d)”)取消优化。 你可以在开发时取消优化,然后在创建代码的产品版本时再启用优化。

“链接器”文件夹(“调试”类别)

设置 描述
生成调试信息 (/DEBUG) 通知链接器包含调试信息,这些信息具有 /Z7、/Zd、/Zi 或 /ZI 指定的格式。
生成程序数据库文件 (/PDB:name) 在此框中指定程序数据库 (PDB) 文件的名称。 必须为“调试信息格式”选择 /ZI 或 /Zi。
去除私有符号 (/PDBSTRIPPED:filename) 如果不希望在 PDB 文件中包含私有符号,则在该框中指定 PDB 文件的名称。 当使用任何生成 PDB 文件的编译器或链接器选项(如 /DEBUG、/Z7、/Zd)生成程序映像时,此选项会创建第二个 PDB 文件。 或 /Zi。 此 PDB 文件省略您不希望交付给客户的符号。 有关详细信息,请参阅 /PDBSTRIPPED(去除私有符号)
生成映射文件 (/MAP) 通知链接器在链接过程中生成映射文件。 默认设置为“否”。 有关详细信息,请参阅 /MAP(生成映射文件)
映射文件名 (/MAP:name) 如果选择“生成映射文件”,则可在该框中指定映射文件。 有关详细信息,请参阅 /MAP(生成映射文件)
映射导出 (/MAPINFO:EXPORTS) 在映射文件中包含导出函数。 默认设置为“否”。 有关详细信息,请参阅 /MAPINFO(包含映射文件中的信息)
可调试程序集 (/ASSEMBLYDEBUG) 为链接器 /ASSEMBLYDEBUG 选项指定设置。 可能的值有:

- 未发送可调试属性。
- 运行时跟踪和禁用优化 (/ASSEMBLYDEBUG)。 此设置为默认设置。
- 无运行时跟踪和启用优化 (/ASSEMBLYDEBUG:DISABLE)。
- <从父级或项目默认设置继承>
- 有关详细信息,请参阅 /ASSEMBLYDEBUG(添加 DebuggableAttribute)

通过使用 Microsoft.VisualStudio.VCProjectEngine.VCDebugSettings 接口,可以在“配置属性”文件夹(“调试”类别)中以编程方式更改这些设置。 有关详细信息,请参阅 VCDebugSettings

其他项目设置

若要调试项目类型(例如静态库和 DLL),Visual Studio 项目必须能够找到正确的文件。 当源代码可用时,你可以将静态库和 DLL 作为单独的项目添加到同一解决方案中,以使调试变得容易。 有关创建这些项目类型的信息,请参阅创建和使用动态链接库 (DLL)使用静态库进行创建。 如果源代码可用,你还可以通过选择“文件”>“新建”>“来自现有代码的项目”来创建新的 Visual Studio 项目。

若要调试项目外部的 DLL,请参阅调试 DLL 项目。 如果需要调试自己的 DLL 项目,但无权访问调用应用程序的项目,请参阅如何从 DLL 项目进行调试

请参阅