コンパイル済みアプリケーションをデバッグするためには、バイナリ内のILあるいは機械語をソースコードの元の行に照合する必要がある。そのためのデータはアプリケーション自体に埋め込めるのだが、そうするとEXEやDLLのファイルサイズは大幅に増加する。代わりに通常は、別の「シンボル」ファイルが使われる。Windowsプラットフォームではこれを、PDBあるいは「プログラムデータベース」と呼んでいる。
PDBフォーマットはもともとC/C++用に設計されたが、.NETにも対応するように何年にもわたり拡張されてきた。残念なことに、このフォーマットはプロプライエタリなものとみなされ、きちんと文書化されておらず、実際にはWindows専用ライブラリを使わないと読めなかった。
.NET Coreとともに、Microsoftは新しいクロスプラットフォームのPDBライブラリが必要になった。彼らは既存のライブラリを単に移植するのではなく、代わりに、Windows PDBフォーマットを書き直すことにした。新しいPortable PDBフォーマットは、ネイティブコードに必要な機能をドロップして、.NET機能だけを残している。おかげでフォーマットはシンプルになり、PDBファイルのサイズは大幅に削減される。
Portable PDBフォーマットは、それを読むためのオープンソースライブラリとともに、ドキュメントが公開されている。ただし、これには欠点もある。Portable PDBフォーマットは、エディットコンティニュ、FXCopスタイルのコード解析(Roslynコード解析が動作)、プロファイリングツール、AOPやコードコントラクトなどのコンパイル後のビルドステップ、.NETデコンパイラをサポートしていない。こうした制約はいずれも恒久的なものではないが、新しいフォーマットをサポートするようツールが更新されるには時間がかかるだろう。
Rate this Article
- Editor Review
- Chief Editor Action