为了调试编译的应用程序,有必要将IL代码或二进制的机器代码与源代码行进行匹配。虽然数据可以嵌入在应用程序中,但这会显著增加EXE或DLL文件的大小。取而代之的是,通常会使用单独的“symbols”文件。在Windows平台上,这被称为PDB或“程序数据库”。
早期PDB格式是为了C和C++设计的,发展了多年以来现在已经支持.NET了。不幸的是,这种格式一直以来都被认为是专有的,这就意味着它没有很好文档记录,而且只能使用Windows库读取。
有了.NET Core,就需要一个新的跨平台PDB库。然而,不仅仅只是转移现有的库,Microsoft选择重写Windows PDB格式。新的Portable PDB格式删除了本地代码所需的功能,只保留了.NET功能。通过这样做,可以简化格式,并显著减小PDB文件大小。
Portable PDB格式是 公开记录 的,还有用来读取它的 开源 库。但有一些缺点:Portable PDB格式不支持编辑及继续、FXCop风格代码分析(Roslyn代码分析可与运行)、性能分析工具、后编译构建步骤,如AOP、Code Contracts或是.NET decompilers。这些局限会进行改进,但需要时间来升级工具以支持新的格式。
查看英文原文: Introducing Portable PDB
原文 http://www.infoq.com/cn/news/2017/02/Portable-PDB