Connect the dots when diagnosing .NET apps

Pre-sale will happen from Nov, 30 to Dec, 4.
Sign up to not forget and to receive messages about .NET diagnostics!

Course description

Have you ever struggled with debugging your application on production environment? Or, maybe you've spent countless hours trying to reproduce the same bug on the development environment? We did, and we know how painful it is! Or maybe you was supposed to analyze the sudden application hang, without any helpful logs available? We were there too! Mystic exceptions that happen only on That Particual Client Machine are also well known to us. As well as profiling the application to find its performance bottleneck.

Testing shows the presence of errors in a product, but "cannot prove that there are no defects". As long as we write software, there will be bugs in it. And we, as developers, are reponsible for finding and fixing those bugs. Moreover, the issue is not always caused by our software directly. Sometimes it is some misconfiguration of the system, web server, you name it... All this implies that felling comfortable as a .NET developer is almost impossible without understanding tools and techniques used for diagnosing a wide spectrum of issues we can meet during our every day work.

We prepared .NET Diagnostic Expert online course to help you gain that knowledge. It is 11 solid weeks of learning through which we will show you myriad of powerful tools used in thoroughly prepared .NET diagnostics scenarios. They cover various Windows/Linux-based cases when using .NET Framework & Core, everything beyond a trivial debugging you probably know already. To practice possessed knowledge, every module has also a prepared homework. Moreover, to deepen your knowledge we've invited three super-debugging-ninjas (Kevin Gosse, Christophe Nasarre and Pavel Yosifovich) as Mentors of our course. As participant you will have an opportunity to attend 3 LIVE meetings with them during which only your imagination limits your questions to them!


Pre-sale will happen from Nov, 30 to Dec, 4.
Sign up to not forget and to receive messages about .NET diagnostics!

Course agenda

1

Debugging

  1. The construction of the managed/native debugger
  2. Symbols, indexing, building your own symbol server
  3. Making Nuget packages easier to debug (SourceLink)
  4. Configuring the debugger in Visual Studio and Visual Studio Code
  5. WinDbg and lldb with SOS - .NET debugging extension
  6. CLI Diagnostic Tools for .NET
  7. Homework
2

Tracing

  1. Event Tracing for Windows (ETW): how it works, interesting system and .NET event sources, how to collect the events
  2. perf, LTTng and eBPF for Linux: how it works, how to collect the events
  3. Event Pipes - modern .NET tracing: how they work, how to collect the events
  4. Homework
3

Windows and Linux diagnostics sources

  1. Process monitoring (Process Hacker/Process Explorer, top/htop, proc-fs)
  2. Process and system tracing tools (Process Monitor, strace)
  3. Monitoring containerized processes (Docker)
  4. Examining system logs
  5. Homework
4

.NET diagnostics case - High CPU usage

  1. How CPU sampling works, analyzing traces under Windows and Linux
  2. Thread Time profiling: context switches and thread scheduling/dispatching
  3. Homework
5

.NET diagnostics case - Deadlocks

  1. Synchronization primitives: Mutex, Semaphore, WaitEvents, Monitor, SpinWait
  2. Looking for a deadlock in a memory dump
  3. Diagnosing deadlocks with tracing
  4. Homework
6

.NET diagnostics case - Network issues - TCP, UDP

  1. Monitoring connections with system tools (netstat, TcpView, ss)
  2. Basic diagnosing with psping and nc
  3. Recording network traces (Wireshark, tcpdump)
  4. Analyzing network traces in Wireshark
  5. Collecting network traces in .NET applications
  6. Homework
7

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

  1. Diagnosing DNS configuration (host, nslookup, dig)
  2. Monitoring HTTP requests in ASP.NET/ASP.NET Core applications
  3. Using network proxies and writing our own network proxy
  4. Detecting problems with TLS certificates
  5. Creating a load-balancer (reverse-proxy) for testing purposes
  6. Homework
8

.NET diagnostics case - Application execution issues

  1. Monitoring applications with dotnet-counters
  2. Diagnosing assembly binding issues
  3. Diagnosing exceptions using tracing and memory dumps
  4. Cases of debugging in the production
  5. Homework
9

.NET diagnostics case - Miscellaneous issues

  1. Memory issues (VMMap, PerfView)
  2. File I/O issues
  3. System issues: drivers, Windows registry, COM, services/daemons
  4. Homework
10

Diagnostics logs in the application

  1. Interacting with the debugger (Debug class)
  2. Validating the code execution (Code Contracts, assertions)
  3. Adding custom trace sources to the application
  4. Homework
11

Writing custom diagnostics tool

  1. Using ClrMD to analyze memory dumps
  2. Writing a custom tracer based on EventPipe
  3. Homework

What do I get?

🔍 Access to 11-weeks .NET Diagnostics Expert on-line course - Access to full .NET Diagnostics course material

🔍 Sessions with Mentors - 3x LIVE sessions with international Mentors of that program, who are world-class .NET diagnostics experts. Sessions will be recorded and shared with you on the platform.

🔍 Access to the course platform - The access to the platform that not only keeps recordings, but also allows you to discuss and contact with instructor and other participants of that course.

🔍 Access to the repository - Besides the access to the recordings, ability to contact others and meet LIVE with Mentors of the programme you receive the access to repository that includes code examples.


Pre-sale will happen from Nov, 30 to Dec, 4.
Sign up to not forget and to receive messages about .NET diagnostics!

Course authors

Sebastian Solnica


Engineer with more than ten years of experience in .NET development, OSS contributor, blogger


I am deeply interested in debugging, profiling, and application security. Besides diagnostics, I often use debuggers and profilers to understand better how things work internally. Thus, reading call stacks, network logs, and system traces are among my favorite activities :) I'm also one of the Warsaw .NET Group leaders and an open source contributor. I mostly publish diagnostics tools and scripts, which you may find on my GitHub profile (linked above). From time to time, I also post diagnostic-related articles on my blog. When I'm not working, I enjoy reading books and walking in the forests.

Course mentors

Kevin Gosse


Microsoft MVP, Staff Engineer at Datadog


Passionate about debugging, there are few things Kevin likes more than digging into an obscure bug and methodically uncovering the causes. He also enjoys performance optimization, that he's lucky enough to do as a full-time job. Microsoft MVP, blogger, and speaker at .NET conferences.

Christophe Nasarre


Microsoft MVP, developer and speaker


In addition to developing and shipping software on Microsoft stacks for 30 years, Christophe has been working as a technical reviewer for many publishing companies since 1996 on books such as 'CLR via C#' and the last editions of 'Windows Internals'. He is providing tools and insights on .NET and troubleshooting via his awesome diagnostics blog posts and his open source projects on GitHub: you might be surprised how much code you could reuse.

Pavel Yosifovich


Developer, trainer, author and speaker


Pavel is a developer, trainer, author, and (sometimes) speaker. He's the co-author of 'Windows Internals 7th edition Part 1', and author of 'Windows Kernel Programming', 'Windows 10 System Programming Part 1' and 'WPF Cookbook 4.5'. Pavel works on many open-source tools on his Github repo, especially geared towards understanding low-level mechanisms. He has also published courses on Pluralsight and Pentesteracademy.


Pre-sale will happen from Nov, 30 to Dec, 4.
Sign up to not forget and to receive messages about .NET diagnostics!

Questions and answers

🔍 Which programming language will be used in examples?

All the examples as well as all our work will be done in C#.

🔍 Which version of .NET will be used in samples?

We will work on .NET Core 3.1/.NET 5, showing differences with .NET Framework when needed.

🔍 When does the course begin and for how long does it last?

We plan to start the course in March 2021. Every week you will receive an access to the next week-unit. New material will be added every week to not overwhelm you and to allow all the group to get through it at the same time.

🔍 What is the format of that course?

It is a video course. Recordings are uploaded to the platform. After signing in with your login and password, you have an access to your account. Besides the recordings, the platform includes a forum, thanks to which you can communicate with an instructor and other participants. Links, password and login will be passed one week before the course begins.

🔍 How long will I have the access to the course?

You will receive life-long access to that edition of the course, including its updates.

🔍 What if I would not be satisfied with the course?

If you watch less than 30% of the course and decide that the course is not for you, you will receive a refund. You have 30 days to decide. Just write to [email protected], and we will return you 100% value.

🔍 Will I receive all the course material at once?

No. We add new materials each week to not overwhelm you and to keep the group pace at the same tempo.

🔍 Will I receive an invoice?

Yes, you will receive a VAT invoice with your purchase, if it applies. It will be sent to you within few days to the e-mail address provided during the order.

🔍 How can I pay for that course?

Payment is done with the use of our on-line shop. Each type of payment supported by it is ok for us.

🔍 Can I pay later, on installments, etc.?

No. During the pre-sale course is sold for the lowered price. If you can't pay now, joining later will be possible, however the course will cost more.

🔍 How many people can access one course account?

The access is given to one person, using an address provided during the purchase. If you are interested in buying more accesses please contact us using [email protected] e-mail address.

🔍 What if I have a problem with something or something is unclear?

Write to us with that e-mail address: [email protected]

Share!

If you think that .NET Diagnostics Expert is a nice dose of knowledge, share it with friends. Just use one of the buttons below!
Thank you!