Debugowanie .NET. Zaawansowane techniki diagnostyczne - Helion
Tytuł oryginału: Advanced .NET Debugging
Tłumaczenie: Łukasz Piwko
ISBN: 978-83-246-2721-9
stron: 528, Format: 168x237, okładka: miękka
Data wydania: 2010-12-21
Księgarnia: Helion
Cena książki: 79,00 zł
Sprawdź, jak rozwiązują problemy najlepsi specjaliści!
- Jak stworzyć niezawodny kod?
- Jak rozwiązywać problemy z synchronizacją wątków?
- Jak wykorzystać usługę raportowania błędów?
Czy znasz programistę, który nigdy w życiu nie użył debuggera? Dzisiejsze rozbudowane i skomplikowane systemy informatyczne wymagają znakomitej znajomości zaawansowanych narzędzi diagnostycznych. Bez nich wykrycie nawet najprostszego potknięcia mogłoby zająć długie godziny, jeśli nie dni, a poświęcony czas wcale nie gwarantowałby sukcesu. Niestety, posługiwanie się zaawansowanymi narzędziami wymaga równie zaawansowanej wiedzy. Jeśli nie masz pewności, czy zgromadziłeś już wszystkie potrzebne Ci informacje, sięgnij po tę książkę - pozwoli to błyskawicznie uzupełnić brakujące dane!
W pierwszej części książki będziesz mógł zapoznać się z podstawami programowania oraz narzędziami wykorzystywanymi w codziennej pracy programisty. Poznasz między innymi metody sterowania wykonywaniem programu, techniki inspekcji obiektowej, sposoby operowania na wątkach oraz polecenia diagnostyczne platformy .NET. Część druga zawiera obszerny zakres informacji dotyczących praktycznych aspektów diagnostyki oprogramowania. Dowiesz się, jak wykrywać błędy w zarządzaniu stertą, jak rozwiązywać kłopoty z pamięcią oraz jak radzić sobie z najbardziej skomplikowanymi problemami dotyczącymi wątków. Na samym końcu zapoznasz się z zaawansowanymi zagadnieniami diagnostyki oprogramowania, takimi jak usługi raportowania błędów, pliki obrazu oraz wyczerpujące opisy najlepszych narzędzi. W książce ".
W "Debugowanie .NET. Zaawansowane techniki diagnostyczne" znajdziesz między innymi takie zagadnienia:
- Podstawowe informacje o dostępnych narzędziach
- Podstawy CLR
- Techniki diagnostyczne - sterowanie wykonaniem programu, punkty wstrzymania
- Inspekcja obiektowa oraz inspekcja kodu
- Dostępne polecenia wewnętrzne CLR oraz polecenia diagnostyczne
- Techniki odzyskiwania pamięci
- Rozwiązywanie problemów z synchronizacją wątków
- Metody diagnozowania wycieków interoperacyjności
- Wykorzystanie plików obrazu
- Generowanie zrzutów z wykorzystaniem debuggera
- Wykorzystanie usługi raportowania błędów
- Dostępne dodatkowe narzędzia, wspierające proces diagnostyczny
Twórz niezawodne oprogramowanie!
Osoby które kupowały "Debugowanie .NET. Zaawansowane techniki diagnostyczne", wybierały także:
- Gray Hat C#. Język C# w kontroli i łamaniu zabezpieczeń 57,74 zł, (17,90 zł -69%)
- ASP.NET Core 6. Kurs video. Rozwijaj aplikacje webowe z Entity Framework Core 179,00 zł, (71,60 zł -60%)
- Testowanie automatyczne w .NET. Kurs video. Zastosowania frameworka nUnit 169,00 zł, (76,05 zł -55%)
- Programowanie asynchroniczne i równoległe w C#. Kurs video. Poziom podstawowy 69,00 zł, (31,05 zł -55%)
- Technologia LINQ. Kurs video. Warsztat pracy z danymi z różnych źródeł 59,00 zł, (26,55 zł -55%)
Spis treści
Debugowanie .NET. Zaawansowane techniki diagnostyczne -- spis treści
Przedmowa (17)
Wstęp (19)
Podziękowania (29)
O autorze (31)
Część I: Podstawy (33)
Rozdział 1. Podstawowe wiadomości o narzędziach (35)
- Debugging Tools for Windows (36)
- .NET 2.0 - Redistributable (37)
- .NET 2.0 - SDK (38)
- SOS (40)
- SOSEX (42)
- CLR Profiler (43)
- Mierniki wydajności (46)
- Reflector for .NET (47)
- PowerDbg (48)
- Managed Debugging Assistants (50)
- Podsumowanie (53)
Rozdział 2. Podstawy CLR (55)
- Przegląd wysokopoziomowy (55)
- CLR i program ładujący Windows (59)
- Ładowanie obrazów rodzimych (60)
- Ładowanie zestawów .NET (62)
- Domeny aplikacji (66)
- Systemowa domena aplikacji (69)
- Wspólna domena aplikacji (70)
- Domyślna domena aplikacji (70)
- Zestawy (70)
- Manifest zestawu (72)
- Metadane typu (74)
- Tabela bloku synchronizacji (81)
- Uchwyt do typu (85)
- Deskryptory metod (92)
- Moduły (93)
- Tokeny metadanych (96)
- EEClass (98)
- Podsumowanie (100)
Rozdział 3. Podstawowe techniki diagnostyczne (101)
- Debuger i proces docelowy debugera (101)
- Symbole (106)
- Sterowanie wykonywaniem programu (109)
- Przerywanie wykonywania (109)
- Wznawianie wykonywania (110)
- Przemierzanie kodu (112)
- Kończenie sesji diagnostycznej (116)
- Ładowanie rozszerzeń kodu zarządzanego (116)
- Ładowanie rozszerzenia SOS (118)
- Ładowanie rozszerzenia SOSEX (120)
- Kontrolowanie procesu debugowania CLR (121)
- Ustawianie punktów wstrzymania (121)
- Punkty wstrzymania na funkcjach skompilowanych przez kompilator JIT (124)
- Punkty wstrzymania na funkcjach jeszcze nieskompilowanych (127)
- Punkty wstrzymania w zestawach prekompilowanych (130)
- Punkty wstrzymania na metodach uogólnionych (133)
- Inspekcja obiektowa (134)
- Zrzucanie pamięci surowej (137)
- Zrzuty typów wartościowych (140)
- Zrzuty podstawowych typów referencyjnych (146)
- Zrzuty tablic (147)
- Zrzuty obiektów na stosie (153)
- Sprawdzanie rozmiarów obiektów (155)
- Zrzuty wyjątków (156)
- Operacje na wątkach (161)
- Polecenie ClrStack (162)
- Polecenie Threads (165)
- Polecenie DumpStack (169)
- Polecenie EEStack (171)
- COMState (171)
- Inspekcja kodu (172)
- Dezasemblacja kodu (172)
- Wydobywanie deskryptora metod z adresu kodu (174)
- Wyświetlanie instrukcji języka pośredniego (175)
- Polecenia wewnętrzne CLR (175)
- Sprawdzanie wersji CLR (176)
- Znajdowanie deskryptora metod po nazwie (176)
- Wykonywanie zrzutu bloku synchronizacji obiektu (177)
- Wykonywanie zrzutu tabeli metod obiektu (177)
- Wykonywanie zrzutu informacji o stercie zarządzanej i systemie odzyskiwania pamięci (178)
- Polecenia diagnostyczne (178)
- Znajdowanie domeny aplikacji obiektu (179)
- Informacje o procesie (179)
- Polecenia rozszerzenia SOSEX (180)
- Rozszerzona obsługa punktów wstrzymania (180)
- Zarządzane metadane (184)
- Dane stosu (185)
- Inspekcja obiektów (187)
- Automatyczne wykrywanie zakleszczeń (188)
- Polecenia dotyczące sterty zarządzanej i systemu odzyskiwania pamięci (190)
- Zapisywanie zrzutów awaryjnych w plikach (192)
- Podsumowanie (194)
Część II: Diagnostyka stosowana (195)
Rozdział 4. Program ładujący zestawy (197)
- Informacje wstępne (197)
- Tożsamość zestawu (198)
- Globalny bufor zestawów (202)
- Domyślny kontekst ładowania (205)
- Kontekst "load-from" (206)
- Kontekst "load-without" (207)
- Prosty błąd ładowania zestawu (207)
- Błąd kontekstu ładowania (214)
- Interoperacyjność i wyjątek DllNotFoundException (222)
- Debugowanie LCG (224)
- Podsumowanie (229)
Rozdział 5. Sterta zarządzana i odzyskiwanie pamięci (231)
- Architektura pamięci systemu Windows (232)
- Alokowanie pamięci (236)
- System odzyskiwania pamięci (241)
- Pokolenia (242)
- Korzenie (251)
- Finalizacja (258)
- Odzyskiwanie pamięci (267)
- Sterta obiektów dużych (269)
- Unieruchamianie obiektów (274)
- Tryby odzyskiwania pamięci (280)
- Diagnozowanie uszkodzonej sterty zarządzanej (281)
- Diagnozowanie fragmentacji sterty zarządzanej (289)
- Diagnozowanie wyjątków braku pamięci (298)
- Podsumowanie (316)
Rozdział 6. Synchronizacja (317)
- Podstawy synchronizacji (317)
- Mechanizmy synchronizacji wątków (318)
- Zdarzenia (323)
- Muteksy (325)
- Semafory (326)
- Monitory (327)
- ReaderWriterLock(Slim) (328)
- Pula wątków (330)
- Wewnętrzne mechanizmy synchronizacji (331)
- Nagłówek obiektu (331)
- Bloki synchronizacji (333)
- Blokady lekkie (337)
- Scenariusze synchronizacji (341)
- Proste zakleszczenie (341)
- Wyjątki blokad porzuconych (349)
- Anulowanie wątków (354)
- Zawieszenie finalizatora (358)
- Podsumowanie (366)
Rozdział 7. Interoperacyjność (369)
- P/Invoke (369)
- Interoperacyjność COM (376)
- Opakowanie wywoływane w czasie wykonywania (377)
- Diagnozowanie wywołań P/Invoke (382)
- Konwencje wywoływania (383)
- Delegaty (388)
- Diagnozowanie wycieków interoperacyjności (396)
- Diagnozowanie finalizacji interoperacyjności COM (402)
- Podsumowanie (411)
Część III: Techniki zaawansowane (413)
Rozdział 8. Debugowanie poawaryjne (415)
- Pliki obrazu - podstawowe wiadomości (416)
- Generowanie zrzutów przy użyciu debugera (418)
- Generowanie plików zrzutu za pomocą narzędzia ADPlus (425)
- Diagnozowanie plików zrzutu (427)
- Warstwa dostępu do danych (428)
- Analizowanie plików zrzutu - nieobsłużone wyjątki .NET (432)
- Usługa raportowania błędów (433)
- Architektura usługi Windows Error Reporting (434)
- Podsumowanie (461)
Rozdział 9. Narzędzia dodatkowe (463)
- PowerDbg (463)
- Instalowanie narzędzia PowerDbg (464)
- Polecenie Analyze-PowerDbgThreads (466)
- Polecenie Send-PowerDbgCommand (467)
- Rozszerzanie PowerDbg (469)
- Visual Studio (472)
- Integracja z SOS (472)
- Debugowanie platformy .NET na poziomie kodu źródłowego (476)
- Visual Studio 2010 (479)
- Program profilujący CLR (484)
- Uruchamianie programu profilującego CLR (484)
- Widok podsumowania (486)
- Widoki histogramu (488)
- Widoki wykresów (489)
- WinDbg i polecenie cmdtree (491)
- Podsumowanie (493)
Rozdział 10. CLR 4.0 (495)
- Narzędzia (495)
- Debugging Tools for Windows (496)
- Pakiet .NET 4.0 Redistributable (496)
- SOS (496)
- Sterta zarządzana i odzyskiwanie pamięci (497)
- Rozszerzone narzędzia diagnostyczne (498)
- Odzyskiwanie pamięci w tle (503)
- Synchronizacja (504)
- Pula wątków i zadań (505)
- Monitor (505)
- Bariera (506)
- Klasa CountdownEvent (507)
- Klasa ManualResetEventSlim (507)
- Klasa SemaphoreSlim (507)
- Klasy SpinWait i SpinLock (507)
- Interoperacyjność (508)
- Debugowanie poawaryjne (509)
- Podsumowanie (510)
Skorowidz (511)