CLIDB: a standard debugging symbol store 31 Jul 2005



El Miguel blogged about the third revision of the ECMA CLI 335 standard.

As the author of a library that should be able to emit assemblies compliant to the above standard, I've been happy to see in this document the description of a standardized debugging symbols store, just like Microsoft's PDB, and Mono's MDB. Having, and using, such a standard, would allow users to share debugging infos between differents CLI informations. For instance you're developping an ASP.NET site on Windows in Visual Studio, you compile the whole thing in Debug mode, and then, you deploy your libraries on a Linux server, hosting XSP. If an error occurs in your code, you would be able to see exactly where. Otherwise, the detail level for an error in a Release configuration is the method. Not very easy to find where errors are in this way.

So the idea of having a file format standardized is somewhat exciting. Especially for me, since I won't have to write a factory of debugging store emitters...

After some discussions and investigations, it appears that the CLIDB format is the kind of symbols store that the SSCLI (aka Rotor) emits. Also I've been said that Microsoft does not plans to implement this standard, because they're happy with their PDB files. Also, if Microsoft's CLR does not understands this format, and .net compilers are not able to emit this kind of store, why would Mono implement this standard, as they already have a file format?

Let me recap:

  • This day, we can't share debugging infos between CLI implementations.
  • Mono emits its own, but Open Source MDB format.
  • Microsoft's CLR emits Microsoft's PDB files.
  • Microsoft is not willing to open the PDB file format, they consider it as an internal feature.
  • Microsoft has open the format used by its Open Source implementation of the CLI (the SSCLI): the CLIDB file format.
  • The CLIDB file format is now part of the ECMA-335 CLI standard.
  • But why would other implementors use this file format instead of their own if the main one does not the same?

If you're just like me willing to be able to use one and only one file format to store debugging symbols, please let Microsoft know it.