2009-03-17 19 views
5

Wykonałem trochę pracy z MSIL i natknąłem się na odniesienia do tych trzech debuggerów.Debuggery MSIL - Mdbg, Dbgclr, Cordbg

  • Jaka jest różnica między nimi?

  • Jest jedną z nich lepszą niż inne. funkcjonalność?

  • Czy są jeszcze inne, które przegapiłem?

Odpowiedz

10

Zakładam, że oznaczało to, że DbgClr nie jest Clt, a mdbg nie jest mdbug?

Visual Studio to jeden z pominiętych, ale DbgClr powinien mieć tę samą funkcjonalność. http://blogs.msdn.com/andypennell/archive/2005/02/21/377621.aspx.

Możesz także użyć windbg z SOS extensions, aby zarządzać debugowaniem z debuggera Windows. SOS jest również pomocny przy korzystaniu z VS, ponieważ pozwala on kontrolować pamięć i tak dalej.

Aby zobaczyć debugowanie MSIL na poziomie źródłowym, spróbuj użyć ilasm z opcją/debug. Ostatnim razem, gdy sprawdziłem, VS pozwoli ci przejść przez źródło .il, podobnie jak C# lub inny język.

Blogi MSDN zawierają mnóstwo informacji na temat debugowania aplikacji .NET - sugeruję, abyś szukał dalej.

+0

Dzięki. Czy miałeś na myśli ilasm z opcją/debug? Jak używać VS do przechodzenia przez źródło/il? Załadowałem go w VS, ale przyciski F5 i F6 nic nie robią? – nzpcmad

+0

Och, tak, ilasm. Wierzę, że po prostu zaczynasz lub przyłączasz się do procesu. VS nie będzie budował i wykonywał kodu IL, ale będzie ładował symbole dla procesu, a te symbole mogą wskazywać na .il. – MichaelGG

+1

Należy zwrócić uwagę, że debuger VS będzie tylko przechodził instrukcje IL lub pozwala ustawić punkty przerwania na poziomie "instrukcji". Wewnątrz IL instrukcja jest z grubsza zbiorem instrukcji, które powodują, że stos ewaluacyjny jest pusty. Jeśli miałeś "ldarg_0" "wywołanie Object.ToString" "stloc_0" Te 3 instrukcje byłyby jedną instrukcją. Punkt przerwania można ustawić w instrukcji "ldarg_0", ale nie w instrukcji "wywołanie Object.ToString". –