fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
2 minut

Wednewsday: analiza crash dumpów i procesów .NET na żywca z kodu


15.05.2013

Niedawno Microsoft wypuścił bardzo interesującą bibliotekę: CLR Memory Diagnostics (w skrócie: ClrMD). Cudeńko to daje nam do rąk niemałą władzę: możemy z jej pomocą podpiąć się z kodu pod dowolny proces .NET i odczytać z niego masę interesujących informacji (jak chociażby wszystko co chcielibyśmy wiedzieć o aktualnym stanie sterty – Heap).

Gdyby tego było mało, w ten sam sposób możemy z kodu analizować crash dumpy.

Jeśli ktoś zna, używa i uwielba SOS.dll (SOS Debugging Extension) to pewnie właśnie trochę popuścił z ekscytacji. A jeśli ktoś nie używa to odsyłam chociażby do Michała czy Pawła, można u nich czasem poczytać o ciekawych low-levelowych mechanizmach w tym temacie.

Nie wysilając się na dodatkowe zbędne literackie wygibasy odsyłam do posta źródłowego na MSDN: .NET Crash Dump and Live Process Inspection.

A tak jeszcze na marginesie: to wszystko mamy na wyciągnięcie ręki prosto z konsoli dzięki ScriptCS (o którym pisałem jakiś czas temu) i jego REPL dla C#. Projekt, który to umożliwia, zwie się ScriptCs.ClrDiagnostics a jego “intro blog post” można przeczytać tutaj: CLR Diagnostics with ClrMD and ScriptCS REPL – ScriptCS.ClrDiagnostics. Historia dzieje się na naszych oczach:).

0 0 votes
Article Rating
4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Mirosław Pragłowski
11 years ago

Long time ago in a city far far away… no dobra nei tak dawno i nie tak deleko – chyba w 2008 na C2C Ingo Rammer miał fajną prezentację: “Hardcore production debugging in .NET” – niestety nie widze na szybko w google dostępnej jej online ale IMHO dla zainteresowanych warto poszukać. (można zacząć tu: http://osherove.com/blog/2010/6/1/video-hardcore-production-debugging-in-net-ingo-rammer.html )

trackback
11 years ago

Wednewsday: analiza crash dumpów i procesów .NET na żywca z kodu | Maciej Aniserowicz o programowaniu…

Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl…

mgrzeg
11 years ago

Maciek, wielkie dzięki za to info, sam właśnie piszę własny interpreter dumpów i taki projekt spada mi niemalże z nieba :) Oczywiście Microsoft.Diagnostics.Runtime opakowuje i korzysta z COMów z dbgeng i dbghlp, ale do tej pory właściwie nie było innej opcji jak tylko pisanie w c++, a teraz wszystko jest podane ‘na tacy’, tylko brać!
@Mirek: Odnośnie prezentacji Ingo, to mam ją gdzieś na dysku, więc w razie co wiesz gdzie mnie znaleźć :)

Michał

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Książka

Zobacz również