背景说明
在Visual Studio内进行代码调试时,PDB文件(Program Database file)起着至关重要的作用。PDB文件包含了与源码相对应的调试信息,可以让调试工具在运行代码时准确地将程序的执行与源代码进行对应,以便于定位问题和调试程序。
Release配置的默认设置是开启优化选项以提高程序的运行效率,并会从可执行程序中删除符号信息,这意味着程序不能调试,因为Visual Studio无法将可执行文件中的地址转换为源代码中的行号。
配置调试环境
Release配置下实现调试流程,修改项目如下属性配置:
关闭编译器优化
如上图所示,关闭编译器对代码的优化。
编译器优化会对代码执行多项优化,如循环展开、代码移动等;这些优化会影响调试器显示源代码与程序实际运行的代码之间的对应关系。
关闭代码生成优化
如上图所示,关闭代码生成的并行生成优化。
在支持多核CPU的系统上,编译器默认会进行并行编译优化,充分利用多核CPU的高速处理能力,以减少编译时间。但在某些情况下,这可能会导致编译器在某些代码段上出错,进而影响生成的可执行文件;可以在项目属性下关闭源代码优化选项。
调试信息格式设置
如上图所示,调试信息格式修改为“程序数据库(/Zi)”。
使用程序数据库(/Zi)选项会在编译期间为生成的可执行文件添加调试信息,而不是通过生成单独的.pdb文件。
生成调试信息
如上图所示,生成调试信息(/DEBUG)编译选项。
使用生成调试信息(/DEBUG)编译选项时,编译器会生成PDB文件并将其与生成的可执行文件一起写入输出目录。
运行环境部署
将编译后的代码部署到目标环境时,需要一并将对应的PDB文件也部署到相应位置。这样,在运行程序时,调试工具就能够正确将二进制文件与PDB文件关联起来,以便于接下来的调试。
项目配置管理器
以上流程仅适用于调试流程,实际发布的产品需要开启编译器的优化选项。
通过配置管理器,新建包含PDB调试信息的项目配置,与发布所需的项目配置区分开。
新建项目方案配置
Visual Studio环境内,通过“生成”->“配置管理器”,新建项目配置。
如上图所示,为解决方案配置的新建和配置流程,复制Release默认配置,并根据上述流程修改编译选项。
切换项目方案配置
根据发布、调试需求切换解决方案配置。
注意事项
- 可执行文件重新编译后,PDB文件需一并更新;
- PDB文件中包含的信息有源代码的详细信息和重要的调试信息,因此在程序发布之前,请确保删除PDB文件以保护代码和敏感信息的安全。