O'Reilly logo

C# 7.0 in a Nutshell by Ben Albahari, Joseph Albahari

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 13. Diagnostics

When things go wrong, it’s important that information is available to aid in diagnosing the problem. An IDE or debugger can assist greatly to this effect—but it is usually available only during development. Once an application ships, the application itself must gather and record diagnostic information. To meet this requirement, the .NET Framework provides a set of facilities to log diagnostic information, monitor application behavior, detect runtime errors, and integrate with debugging tools if available.

The .NET Framework also allows you to enforce code contracts. Introduced at the time of Framework 4.0, code contracts allow methods to interact through a set of mutual obligations, and fail early if those obligations are violated.

We cover code contracts in a separate addendum, which you can download at http://www.albahari.com/nutshell.

Note

The Code Contracts API was developed by Microsoft Research, and requires a separate download. Despite early promise, the technology never fully caught on, and has seen minimal updates over the past few years. Perhaps its primary drawback is lack of direct C# language support. This results in a slower build-run cycle, because the output assembly must be “re-written” after compilation.

The types in this chapter are defined primarily in the System.Diagnostics namespace.

Conditional Compilation

You can conditionally compile any section of code in C# with preprocessor directives. Preprocessor directives are special instructions ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required