CLIDB: a standard debugging symbol store 2
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.
Trackbacks
Use the following link to trackback from your own site:
http://evain.net/blog/articles/trackback/26

"But why would other implementors use this file format instead of their own if the main one does not the same?"
Correct me if I’m wrong, but even if just the three OS/SS implementations follow the CLI standard DB format, wouldn’t that still be worth it?
Besides, from what I can tell Visual Studio supports full Rotor debugging, so it should be easy enough for it to support CLIDB. Even though you won’t be able to compile an application in Visual Studio and debug it anywhere (unless VS were to compile side-by-side PDB and CLIDB, or to add CLIDB as an option), you certainly should be able to compile in Mono (or DotGNU should they support it) and debug anywhere (including Visual Studio).
Nobody can blame you for being compatible with standards. Moreover people are always shouting as soon as you try to create a new one ;) A big company is well known for it … So adopt the standards (ECMA!)