Course intended for:

The training is addressed to programmers wanting to diagnose errors in their applications faster and better.

Course objective:

The training objective is to get the participants familiar with various forms of .NET application debugging and profiling. Thanks to the diversity of problems solved during the training, the participants will be able to develop their knowledge associated with internal mechanisms managing the framework and the operating system. The basic tool of programmers, used to eliminate errors, is often Visual Studio. During the training, we will find out how to configure this environment properly (advanced debugger options, symbol solving control, views available in the debugger). Afterwards, we will focus on problems, for which VS is not sufficient or cannot be used (e.g. in the production environment). We will get familiar with the free diagnostic tools, which we will use to analyze the .NET environment from the „native world" perspective (WinDbg: SOS, SOSEX) to analyze its internal structures (e.g. Garbage Collector).

Great emphasis has been put on the practical aspects of the training; therefore, the theory presented during the lecture will be supported with examples from real life. The problems we will encounter include: managed and native memory leaks, deadlocks and other errors in multi-threading applications, high CPU usage, "swallowing of exceptions".

Course strengths:

The training participants will earn the following skills:

  • Thorough knowledge of the debugger option, available in Visual Studio

  • tracing and log gathering in the test and production environment

  • application profiling in the test and production environment

  • application debugging outside VS in the test and production environment

  • understanding of internal mechanisms and structures in the framework and the operating system necessary to diagnose problems in .NET applications.


Experience in working with Visual Studio, familiarity with .NET Framework at least at the moderately advanced level.

Course parameters:

The training duration is 3 days.

Course curriculum

  1. Diagnostics in VS

    1. What do we get from VS debugger?

      1. discussing of debugger configuration,

      2. setting of breakpoints/tracepoints,

      3. analysis of exceptions (1st chance, 2nd chance),

      4. concurrent code debugging (parallel stacks, threads, parallel tasks),

      5. examination of functioning of GC (object pinning, work with dumps, memory analyses in VS 2013).

    2. Profiler vs. debugger and profilers available in VS

    3. IntelliTrace

    4. Gathering data in production

  2. Windbg and Perfview

    1. Native debugger (Windbg)

      1. View of the .NET from the perspective of the operating system

      2. When to use a native debugger?

      3. Getting familiar with SOS and presentation of useful commands in an exemplary application.

    2. Perfview

      1. When and how to use perfview?

      2. Perfview in CPU diagnostics,

      3. Perfview in diagnostics of memory leaks and GC3 operation.

  3. Using of the techniques learned

    1. Diagnostics of multithread operations (deadlocks, unsafe-threading)

    2. Diagnostics of „exceptional" exceptions (that is, acquisition of information on the original error cause)

    3. Diagnostics of memory leaks (managed and native memory)

    4. Finding reasons for the slow operation of the application (CPU, IO)

Any questions?

* Required.

Phone +48 22 2035600
Fax +48 22 2035601