MCTS 70-536 Study Group - Diagnostics
-
Upload
marcin-daczkowski -
Category
Documents
-
view
13 -
download
1
Transcript of MCTS 70-536 Study Group - Diagnostics
MCTS 70-536 Study Group
Spotkanie 6: Diagnostics
Agenda
• Logowanie zdarzeń• Monitorowanie wydajności • Debug & Trace• WMI
MONITOROWANIE WYDAJNOŚCIMCTS 70-536 Study Group / Spotkanie 6
Metody statyczne klasy Process
• GetCurrentProcess():Process• GetProcessById(int, [string]):Process• GetProcesses([string]):Process[]• GetProcessesByName(string, [string]):Process[]• Start(ProcessStartInfo):Process• Start(string, [string]):Process• Start(string, [string], string, SecureString,
string):Process
Monitorowanie liczników
• Obiekty systemu operacyjnego– Klasy i instancje (np. CPU, wątek, pamięć)– Pseudoinstancja _Total
• Przykłady– # uchwytów używanych w procesie– # błedów stron/sek
• Dostęp:– Przystawka Performance Monitor (perfmon)– API (natywne/zarządzane)
Monitorowanie liczników (c.d.)
• Klasa PerformanceCounter : IDisposable – CategoryName– CounterName– InstanceName– MachineName– ReadOnly– Next{Value|Sample}– Increment– IncrementBy
Monitorowanie liczników (c.d.)
• PerformanceCounterCategory– MachineName– CategoryName– CategoryHelp– CategoryType = MultiInstance | SingleInstance– GetCounters():PerformanceCounter
DEBUG & TRACEMCTS 70-536 Study Group / Spotkanie 6
Klasa Debugger
• Działa tylko w trybie Debug• Metody– Break– IsAttached– IsLogging– Launch– Log
Atrybuty Debuggera
• DebuggerBrowsableAttribute• DebuggerDisplayAttribute• DebuggerHiddenAttribute• DebuggerNonUserCodeAttribute• DebuggerStepperBoundryAttribute• DebuggerStepThroughAttribute• DebuggerTypeProxyAttribute• DebuggerVisualizerAttribute
Klasa Debug i Trace c.d.
• Niemal identyczne• Oparte o wspólną infrastrukturę TraceListeners• Zależą od różnych falg (DEBUG i TRACE)• Statyczne metody/właściwości Debug i Trace– Assert – Fail– Write[Line][If]– Indent– AutoFlush– Flush i Close
Klasa Debug i Trace c.d.
• Statyczne metody Trace:– TraceError– TraceInformation– TraceWarning
Assert
• Dodatkowa dokumentacja• Pozwalają zachować stan• Jak sprawdzać?– Atomowe sprawdzenia– Bez efektów ubocznych – Kompletnie
• Co sprawdzać?– Parametry metod, setterów i indekserów– Otrzymywane wartości z wywołań
• CodeContracts
TraceSwitch i TraceListener
• TraceSwitch– Decyduje co ma być zalogowane zanim trafi do listenera
• TraceListener– Filtry– Wbudowane listenery
• DefaultTraceListener• TextWriterTraceListener• XmlWriterTraceListener• EventLogTraceListener• DelimitedListTraceListener
– Możliwość tworzenia własnych listenerów i ich filtrów
CorrelationManager
• Pozwala grupować logiczne bloki aktywności• Korzysta z Thread Local Storage• Hierarchiczny (LogicalOperationStack)• StartLogicalOperation• StopLogicalOperation• Udostępnia pole ActivityId
TraceSource
• Dedykowane źródła logów dla poszczególnych modułów aplikacji
• Możliwośc przekazywania dodatkowych danych do loga
• Szersza skala poziomów logowania
Trace Source A Trace Source B Trace Source C
Switch 1 Switch 2
Trace Listener A
Trace Listener B
Trace Filter 1
Trace Listener C
Trace Listener D
Trace Filter 2
Konfiguracja
• Poprzez API lub w app.config<system.diagnostics>
<sources><source …><listeners><add … /></listeners></source></sources><sharedListeners><add …/></sharedListeners><switches />
</system.diagnostics>