我们很高兴宣布 PDB项目扩展的2.0版 上 Visual Studio库 . PDB项目,顾名思义,将包含在.PDB文件中的信息创建一个C++项目。从.pdb中提取的信息既包括用于生成的源文件(.c、.cpp),也包括链接库的源文件。生成的项目将点亮IDE特性,包括Find all References、GoToDefinition和IntelliSense操作。当前版本的扩展的一个限制是无法生成生成的项目;所以这个扩展还不能代替构建系统。
我为什么要使用PDB项目扩展?
VisualStudioIDE需要.vcxproj来进行浏览和IntelliSense操作。今天使用的许多构建系统仍然基于与visualstudio不兼容的非vcxproj设计。PDB项目扩展有助于缩小差距:。从旧版本生成的PDB文件可用于生成.vcxproj文件,这些文件可在Visual Studio中打开以启用IDE的增强功能。
如何使用分机
PDB项目扩展在 Visual Studio库 . 如果您已经安装了以前的版本,请在安装版本2之前卸载它。
一旦安装了版本2,您就可以通过调用file->open->Project/Solution命令来打开.pdb文件。选择要转换的.pdb文件。将显示来自PDB的源文件列表。如果某些文件在磁盘上的同一位置,它们可能会被自动解析。如果存在未解析的文件,请使用“文件夹映射”对话框提供创建.pdb时使用的目录(例如,由生成系统)与存储源的目录(例如,远程源服务器)之间的映射。按“刷新”查看每个目录映射的结果。解析完所有文件后,单击“完成”并选择保存文件的位置。该工具将把新创建的项目加载到当前解决方案中。
看电视 演示 在9频道!
调试器集成
从版本2.0开始,扩展集成到VisualStudio调试器中。如果在VisualStudio调试会话期间右键单击“调用堆栈”窗口中的一行,则现在可以从关联的.pdb生成项目。生成的项目将以静默方式加载到当前解决方案中,以避免解决方案中有太多不需要的项目。这在调试不熟悉的代码时非常有用:在几分钟内,您就可以获得正在调试的程序的每个堆栈帧的完整浏览和智能感知信息。
其他功能
命令行工具 :除了基于UI的工具外,最新的更新还提供了一个命令行工具,使用户能够自动执行转换任务。要提取工具,需要将文件扩展名从“vsix”更改为“zip”。
刷新功能 :每当用户打开PDB生成的项目时,如果生成该项目的.PDB已更改,则用户将得到重新生成该项目的提示。另外,如果在解决方案资源管理器中右键单击从.pdb生成的项目,则会看到“刷新pdb项目”选项。
在引擎盖下偷看
PDB加载程序使用 这个 DIA软件开发包 从PDB中提取信息。提取引擎基于diasdk中包含的示例。
项目创建者使用MSBuild 施工模型 创建.vcxproj文件。因为PDB是一个扩展,它不能使用项目系统的内部api。作为一个副作用,项目文件将与普通的.vcxproj文件略有不同。
开发过程中的一个主要问题是,我们发现每个cpp文件的Intellisense大约慢了20秒。平均来说,应该不超过2-3秒。通过一些调查,我们发现丢失的头文件导致Intellisense使用PCH忽略。PCH跳过了完整性,因为一旦创建了PCH,它只跟踪用于构造它的文件。任何丢失的文件都不会被追踪。当头文件稍后出现时,PCH不会触发刷新。为了解决慢加载问题,PDB项目将检测丢失的头文件并创建一个空白的虚拟文件。这将使Intellisense即使在处理不完整的项目时也能保持快速。
PDB项目适合每个人吗?
不。大多数VC用户不需要这个扩展。它面向拥有非vcxproj项目系统的advances用户。没有项目,IDE就无法提供丰富的特性。PDB项目将有助于弥合这一差距。
我们需要你的反馈
如果你使用 PDB项目 ,我们希望得到您的反馈。请随时发表评论到这个博客或电子邮件菲利克斯,巴拉吉或奥列格
谢谢!
Felix Huang公司( yuehuang@microsoft.com ),Balaji Thumbavanam Kachapeswaran先生( bathumba@microsoft.com ),奥列格·哈里托诺夫(olegkhar@microsoft.com)还有VC++团队