Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Create a list of which SOS commands can be implemented in ClrMD #33
It would be nice to have a list/table that shows which SOS Commands can be implemented directly or indirectly with ClrMD. Maybe even include code sample directly or have links to a sample in the source.
Then it would be easy for people to understand what ClrMD can or cannot do.
This is a very reasonable request, but one that is a bit hard to come up with in practice.
My goal starting this project ages ago was that ClrMD should be able to do everything that SOS can do. (Well, more specifically it would give you all the building blocks to build what SOS can do...which is a big distinction.) However there are some things that are missing that require a large amount of work and I simply haven't gotten around to them.
Off the top of my head things that won't work and I plan to eventually support: DumpIL (can't find the address of the IL itself, you would have to do the disassembly). DumpLog (I eventually plan to expose an interface to get at stress logs, though I doubt external people will care). SyncBlk.
I don't plan to support "!u -gcinfo" or "!gcinfo" for practical reasons...that's not an interface that's wrapped, SOS actually carries a gcinfo parser...and it's likely too much to implement in ClrMD.
The rest of the stuff I see in sos are either mostly complete (missing a few things that SOS could output that you can't get from ClrMD) that I could give you if there was a request to. I also see things in SOS that are too internal to be relevant (CLR developers would need them, you can't implement them with ClrMD, but someone debugging managed code shouldn't need...) In any case, I should formally document what I'm saying here...but I'm not sure when I'll have time to get around to it.
If I could point out one thing though: If there's something you think is useful but you can't get with ClrMD, please raise a feature request here. I tend to implement what people ask for when I have time to work on ClrMD. Please don't assume that if something can be done in SOS but not in ClrMD that it was planned that way...usually it's just a matter of me not implementing it yet and no one has asked for it.