Course curriculum

  • 01

    Debugging

    • Course overview

    • How debuggers work

    • Symbols

    • Debugging in Visual Studio

    • Debugging in Visual Studio Code

    • Debugging in WinDbg and LLDB

    • CLI Diagnostic Tools for .NET

    • Homework

  • 02

    Tracing

    • Event Tracing on Windows

    • Event Tracing on Linux

    • .NET Event Pipes

    • Homework

  • 03

    Windows and Linux diagnostics sources

    • Process monitoring

    • Process and system tracing tools

    • Containerized processes

    • System logs

    • Homework

  • 04

    .NET diagnostics case - High CPU usage

    • CPU sampling

    • Thread Time profiling

    • .NET Profiler

    • Homework

  • 05

    .NET diagnostics case - Deadlocks

    • Synchronization primitives

    • Finding deadlocks in memory dumps

    • Finding deadlocks in traces

    • Homework

  • 06

    .NET diagnostics case - Network issues: TCP, UDP

    • Monitoring TCP & UDP connections

    • Working with TCP & UDP network traces

    • Network trace providers in .NET applications

    • Homework

  • 07

    .NET diagnostics case - Network issues: DNS, HTTP(S)

    • Troubleshooting DNS

    • Monitoring HTTP(S) requests in web applications

    • Using network proxies in diagnostics

    • Homework

  • 08

    .NET diagnostics case - Application execution issues

    • Assembly loading issues

    • Exceptions

    • Production debugging

    • Homework

  • 09

    .NET diagnostics case - Miscellaneous issues

    • Memory issues

    • File I/O issues

    • Other system issues

    • Homework

  • 10

    Diagnostics logs in the application

    • Interacting with the debugger

    • Writing custom trace sources

    • Homework

  • 11

    Writing custom diagnostics tool

    • Using ClrMD to inspect .NET applications

    • Working with .NET EventPipe traces

    • Homework

    • Congratulations

  • 12

    Webinars

    • Christophe Nasarre - Webinar

    • Kevin Gosse - Webinar

    • Pavel Yosifovich - Webinar