Zapewne nie raz miałeś(-łaś) tak, że aplikacja na produkcji, u klienta lub serwerze testowym działa inaczej, niż powinna. A to pojawia się jakiś wyjątek, a to wynik operacji jest inny, niż powinien być. Znając życie, w logach nic ciekawego nie było i przez dłuższy czas dodawałeś(-łaś) do nich kolejne linijki w pogoni za błędem. Myślę, że każdy z nas miał wcześniej czy później podobny problem. Nie raz przemknęło Ci przez myśl, by zainstalować Visual Studio, aby...
W kolejnym wpisie pozostajemy przy zmianach, które pojawiły się w nowej wersji Visual Studio 2019. Tym razem zajmiemy się zmianami w debugowaniu aplikacji. Pojawiło się kilka ciekawych rzeczy, takich jak wyszukiwanie w okienkach Autos, Locals, Watch, Data Breakpoint czy zwiększenie wydajności. Jeśli jeszcze nie pobrałeś/pobrałaś Visual Studio 2019, to gorąco zachęcam, bo warto!...
Opis przydatnej wtyczki do debuggowania aplikacji napisanych w Angularze w przeglądarce Chrome.
Zauważyłem, że czasami programiści używają Debug.WriteLine, aby wyświetlić jakieś informacje w oknie output: Debug.WriteLine("Jakies informacje."); Nie ma w tym nic złego, ale czasami dodawana jest powyższa linia tylko tymczasowo, aby ułatwić sobie debugowanie (szczególnie aplikacji wielowątkowej). Visual Studio pozwala osiągnąć ten sam efekt, za pomocą zwykłego breakpoint’a. Wystarczy najpierw ustawić breakpoint (naciskamy F9), a potem kliknąć na nim i wybrać When Hit: Zostanie otworzone nowe ok...
Kilka dni temu opisywałem jak w VS 2008 debugować kod .NET Framework i obiecywałem sprostowanie do wersji 2012. Z tego co udało mi się dowiedzieć, temat nie jest zbyt jasny ale wygląda na to, że: 1. W niektórych wersjach VS2010 działało to ale potem znów zostało popsute. 2. W VS2012 funkcja nie działa. Jeśli komuś udało się to uruchomić pod VS 2012, proszę o komentarz pod wpisem. Link do Microsoft Connect, opisujący bug: http://connect.microsoft.com/VisualStudio/feedback/details/697947/net-framewo...
Ostatnio przyszło mi nieco więcej niż zwykle bawić się zrzutami pamięci różnych procesów, generowanych przez procdumpa, tudzież myszkowo z Process Explorera lub Process Hackera. Czasem po prostu wygodniej jest zrobić zrzut i potem bawić się takim 'zamrożonym procesem' na spokojnie, w innym miejscu i o innym czasie. Szczególnie, gdy bawimy się w analizę jakiegoś ciekawego malware'u (;)) i po prostu maszyna wirtualna nie jest najlepszym miejscem do zabawy debuggerem, a pliki .dmp zarażonych procesów można ...
autor: W ostatnim poście wspominałem, że napisze jeszcze o ustawieniach debuggera VS w rejestrze. Okazuje się, że nie wszystko da się ustawić w Visual Studio czy ustawieniach systemowych. Częścią funkcjonalności trzeba sterować za pomocą ustawień w rejestrze - na szczęście są to marginalne przypadki. Czasami jednak zdarza się, że dodając jakieś wyrażenie do okienka Watch dostajemy niemiły komunikat - Function evaluation timed out. Buu... :/ Okazuje się, że możemy choć trochę wpłynąć na VS po jakim cza...
Autor (Paweł Łukasik): Kilka dni temu miałem okazję wygłosić kolejną prelekcję na Wrocławskiej Grupie .NET. Tym razem jako temat wybrałem debugger, który jest dostępny w Visual Studio. Jest to na prawdę kawałek narzędzia, który możemy wykorzystać dość sprawnie na naszą korzyść jeśli tylko wiemy gdzie szukać. Prezentacja to tak na prawdę zbiór tego co publikowałem w ostatnich czasach na blogu jak również na devPytania tak więc jeśli ktoś regularnie czyta bloga - zapewne nie znajdzie zbyt wiele nowości. ...
Biblioteka SOS, która dostarczana jest wraz z .NET Framework to nie jedyne źródło informacji o aplikacjach .NET analizowanych w WinDbg. Poza nią jest jeszcze Psscor4 (oraz wcześniejsza wersja - Psscor2, obie do ściągnięcia z Microsoft), która jest rozbudowaną wersją sos i jest najczęśniej zamiast niej używana. Kolejna to sosex, autorstwa Steve’a Johnsona, o której tu i ówdzie już wspominałem i właśnie o niej powiemy dziś parę słów. Miesiąc temu pojawiła się najnowsza wersja tej biblioteki, w której pojaw...
Kilka lat temu (będzie już niedługo 5!) napisałem dla WSS tekst 'Admin czy nie admin' o narzędziach Sysinternals, dzięki którym można dosyć sprawnie poradzić sobie ze standardowymi problemami związanymi z ograniczonym dostępem do systemu. Linka nie podaję, ponieważ lada moment wss.pl przenosi się i zapewne stare sznurki pourywają się, więc ‘google is your friend’ :). Już wówczas były to potężne narzędzia diagnostyczne dające bardzo wiele informacji o tym co się aktualnie dzieje w systemie. Od tamtej chwi...
autor: W poprzedniej notce zademonstrowałem przykład debuggowania poawaryjnego ze źródłami, jednak na czytelników czekała zręczna pułapka. Nie ja jednak za nią stoję, ale o tym za chwilę. Debuggowanie ze źródłami lokalnymi Spróbujmy uruchomić zwykłą sesję debuggera ze źródłami, na bazie przykładu wałkowanego od kilku wpisów. Dla czytelności nie skorzystamy z serwera symboli oraz źródeł, choć efekt byłby identyczny do opisanego poniżej. Rozpoczynamy od sprawdzenia symboli i źródeł 0:000> .restart 0:000> ...
autor: Postanowiłem napisać kilka postów, które odkrywają “nieznane” funkcje Visual Studio. Dziś jeden z nich. Czasem widzę, że największą furorę robią posty opisujące rzeczy (dla mnie) oczywiste. Okazuje się, jednak, że to co jest znane mnie, niekoniecznie jest wiedzą dość dobrze rozpowszechnioną. Zaczynamy zatem.Analiza dumpów Jeszcze do wersji 2008 ta funkcjonalność zarezerwowana była tylko dla świetnego narzędzia jakimi jest WinDbg. Jednakże od wersji 2010 VisualStudio potrafi odczytać i przeanalizo...
Autor: Prawie miesiąc temu pisałem o MAX_PATH i pod koniec nieco przydługiego wpisu opisałem technikę pozwalającą załadować moduł, który zapisany jest w postaci alternatywnego strumienia pliku. Niejako na marginesie wspomniałem, iż alternatywne strumienie plików nie są widoczne wprost w eksploratorze windows, a zatem tak zapisany moduł jest przed nami niejako ‘ukryty’ i dzięki temu taka technika przy odrobinie wyobraźni może stanowić pożywkę dla autorów wszelkiego rodzaju niechcianych aplikacji. DKOM Dzi...
Gdy podczas debuggowania aplikacji chcemy ją zatrzymać w pewnym miejscu, zwykle ustawiamy „breakpoint”, aby jednak ten sposób zadziałał, musi być podłączony do procesu, który chcemy debuggować Debugger. Co można jednak zrobić, gdy tak nie jest (nie zawsze uda nam się ręcznie podłączyć (attach))? Gdy debugger nie jest podłączony do procesu, to można takie podłączenie wymusić dzięki wykorzystaniu klas z przestrzeni nazw System.Diagnostic: Debugger.Launch i Debugger.Break (http://msdn.microsoft.com/en-u...
Czasami zdarzają się sytuacje, że pomimo usilnych prób nie możemy zreprodukować błędu u siebie na maszynie lokalnej. Musimy sprawdzić dlaczego nasza aplikacji źle działa na maszynie produkcyjnej. W tym wpisie postaram się przedstawić jakie narzędzia mamy do dyspozycji jeśli jeśli taka potrzeba zajdzie. Zobaczmy co jest zatem dostępne.Visual Studio Remote Debugging Pierwszą naszą opcją jest Remote debugging dostępny w VisualStudio. Wraz z zainstalowanym VS instalują nam się komponenty, które możemy wykorz...
Jak zdebugować zewnętrzny proces lub aplikację? Pick me, pick me, krzyczą wszyscy. Tak, możemy to zrobić poprzez wywołanie Debug->Attach to process. Jest jednak inny sposób. Wyobraźmy sobie taką sytuację. Aplikacja kończy się wyjątkiem zaraz po jej uruchomieniu. Nie mamy nawet sekundy czasu na podczepienie się do procesu w ten sposób. Ale jest sztuczka :-) Wywołujemy File->Open Project i wskazujemy plik .exe, który chcemy debugować. Klikamy F5 i Voila!
Ostatnio popełniłem post na temat co to jest Code Contracts i na czym to polega. Teraz stwierdziłem, iż przyda się kilka informacji na temat ich debugowania – w szczególności iż kod ma działać jak warunki pre i post i jak to zostało zorganizowane. Żeby nie odkrywać ameryki na nowo, w tym celu wykorzystam przykłady zawarte w instalce CC, a które znajdują się w katalogu: C:\Program Files\Microsoft\Contracts\Samples Na pierwszy ogień weźmy przykład Rational. Otwórzmy plik soluti...