Una soluzione bellissima per fare single-stepping a livello IL, postata sulla ADVANCED-DOTNET mailing list di DevelopMentor da Serge Lidin (l'autore dell'"Inside Microsoft .NET IL Assembler")
Supponiamo di voler fare il debugging a livello IL di un programma Foo.cs. Dovremo procedere nel seguente modo (ho scelto una modalità da linea di comando per capire meglio i passi):
1. Visual C# .NET Compiler (Emit debugging information)
csc Foo.cs /debug+
2. .NET Framework IL Disassembler (Show original source lines as comments, Compile to file with specified name)
ildasm Foo.exe /source /out=Foo.il
3. .NET Framework IL Assembler (Include debug information)
ilasm Foo.il /debug
4. Development Environment (Open the specified executable to be debugged)
devenv Foo.exe /debugexe
Vi chiederà di salvare il file della soluzione (Foo.sln). Dopo averlo salvato, potrete fare Step Into (F11) nel codice IL generato per il vostro codice C#. Il codice C# lo continuerete a vedere nel codice IL, come codice commentato.
Comodissimo, soprattutto per gli snippet che spesso vi propongo! :-)