System.Diagnostics Namespace

The System.Diagnostics namespace provides classes that allow you to interact with system processes, event logs, and performance counters.

Remarks

  • The EventLog component provides functionality to write to event logs, read event log entries, and create and delete event logs and event sources on the network. The EntryWrittenEventHandler provides a way to interact with event logs asynchronously. Supporting classes provide access to more detailed control, including: permission restrictions, the ability to specify event log types (which controls the type of default data that is written with an event log entry), and iterate through collections of event log entries. For more information about these tasks, see the EventLogPermission, EventLogEntryType, and EventLogEntryCollection classes.

  • The Process class provides functionality to monitor system processes across the network, and to start and stop local system processes. In addition to retrieving lists of running processes (by specifying either the computer, the process name, or the process id) or viewing information about the process that currently has access to the processor, you can get detailed knowledge of process threads and modules both through the Process class itself, and by interacting with the ProcessThread and ProcessModule classes. The ProcessStartInfo class enables you to specify a variety of elements with which to start a new process, such as input, output, and error streams, working directories, and command line verbs and arguments. These give you fine control over the behavior of your processes. Other related classes let you specify window styles, process and thread priorities, and interact with collections of threads and modules.

  • The PerformanceCounter class enables you to monitor system performance, while the PerformanceCounterCategory class provides a way to create new custom counters and categories. You can write to local custom counters and read from both local and remote counters (system as well as custom). You can sample counters using the PerformanceCounter class, and calculate results from successive performance counter samples using the CounterSample class. The CounterCreationData class enables you to create multiple counters in a category and specify their types. Other classes associated with the performance counter component provide access to collections of counters, counter permission, and counter types.

The System.Diagnostics namespace also provides classes that allow you to debug your application and to trace the execution of your code. For more information, see the Trace and Debug classes.

Classes

TypeReason
BooleanSwitch

Provides a simple on/off switch that controls debugging and tracing output.

ConditionalAttribute

Indicates to compilers that a method call or attribute should be ignored unless a specified conditional compilation symbol is defined.

ConsoleTraceListener

Directs tracing or debugging output to either the standard output or the standard error stream.

CorrelationManager

Correlates traces that are part of a logical transaction.

CounterCreationData

Defines the counter type, name, and Help string for a custom counter.

CounterCreationDataCollection

Provides a strongly typed collection of CounterCreationData objects.

CounterSample

Defines a structure that holds the raw data for a performance counter.

CounterSampleCalculator

Provides a set of utility functions for interpreting performance counter data.

DataReceivedEventArgs

Provides data for the Process.OutputDataReceived and Process.ErrorDataReceived events.

DataReceivedEventHandler

Represents the method that will handle the Process.OutputDataReceived event or Process.ErrorDataReceived event of a Process.

Debug

Provides a set of methods and properties that help debug your code. This class cannot be inherited.

DebuggableAttribute

Modifies code generation for runtime just-in-time (JIT) debugging. This class cannot be inherited.

DebuggableAttribute+DebuggingModes
Debugger

Enables communication with a debugger. This class cannot be inherited.

DebuggerBrowsableAttribute

Determines if and how a member is displayed in the debugger variable windows. This class cannot be inherited.

DebuggerBrowsableState

Provides display instructions for the debugger.

DebuggerDisplayAttribute

Determines how a class or field is displayed in the debugger variable windows.

DebuggerHiddenAttribute

Specifies the DebuggerHiddenAttribute. This class cannot be inherited.

DebuggerNonUserCodeAttribute

Identifies a type or member that is not part of the user code for an application.

DebuggerStepperBoundaryAttribute

Indicates the code following the attribute is to be executed in run, not step, mode.

DebuggerStepThroughAttribute

Instructs the debugger to step through the code instead of stepping into the code. This class cannot be inherited.

DebuggerTypeProxyAttribute

Specifies the display proxy for a type.

DebuggerVisualizerAttribute

Specifies that the type has a visualizer. This class cannot be inherited.

DefaultTraceListener

Provides the default output methods and behavior for tracing.

DelimitedListTraceListener

Directs tracing or debugging output to a text writer, such as a stream writer, or to a stream, such as a file stream.

DiagnosticsConfigurationHandler

Handles the diagnostics section of configuration files.

EntryWrittenEventArgs

Provides data for the EventLog.EntryWritten event.

EntryWrittenEventHandler

Represents the method that will handle the EventLog.EntryWritten event of an EventLog.

EventInstance

Represents language-neutral information for an event log entry.

EventLog

Provides interaction with Windows event logs.

EventLogEntry

Encapsulates a single record in the event log. This class cannot be inherited.

EventLogEntryCollection

Defines size and enumerators for a collection of EventLogEntry instances.

EventLogEntryType

Specifies the event type of an event log entry.

EventLogInstaller

Allows you to install and configure an event log that your application reads from or writes to when running.

EventLogPermission

Controls code access permissions for event logging.

EventLogPermissionAccess

Defines access levels used by EventLog permission classes.

EventLogPermissionAttribute

Allows declaritive permission checks for event logging.

EventLogPermissionEntry

Defines the smallest unit of a code access security permission that is set for an EventLog.

EventLogPermissionEntryCollection

Contains a strongly typed collection of EventLogPermissionEntry objects.

EventLogTraceListener

Provides a simple listener that directs tracing or debugging output to an EventLog.

EventSourceCreationData

Represents the configuration settings used to create an event log source on the local computer or a remote computer.

EventTypeFilter

Indicates whether a listener should trace based on the event type.

FileVersionInfo

Provides version information for a physical file on disk.

ICollectData

Prepares performance data for the performance DLL the system loads when working with performance counters.

InstanceData

Holds instance data associated with a performance counter sample.

InstanceDataCollection

Provides a strongly typed collection of InstanceData objects.

InstanceDataCollectionCollection

Provides a strongly typed collection of InstanceDataCollection objects.

MonitoringDescriptionAttribute

Specifies a description for a property or event.

OverflowAction

Specifies how to handle entries in an event log that has reached its maximum file size.

PerformanceCounter

Represents a Windows NT performance counter component.

PerformanceCounterCategory

Represents a performance object, which defines a category of performance counters.

PerformanceCounterCategoryType

Indicates whether the performance counter category can have multiple instances.

PerformanceCounterInstaller

Specifies an installer for the PerformanceCounter component.

PerformanceCounterInstanceLifetime

Specifies the lifetime of a performance counter instance.

PerformanceCounterManager

Prepares performance data for the performance.dll the system loads when working with performance counters.

PerformanceCounterPermission

Allows control of code access permissions for PerformanceCounter.

PerformanceCounterPermissionAccess

Defines access levels used by PerformanceCounter permission classes.

PerformanceCounterPermissionAttribute

Allows declaritive performance counter permission checks.

PerformanceCounterPermissionEntry

Defines the smallest unit of a code access security permission that is set for a PerformanceCounter.

PerformanceCounterPermissionEntryCollection

Contains a strongly typed collection of PerformanceCounterPermissionEntry objects.

PerformanceCounterType

Specifies the formula used to calculate the PerformanceCounter.NextValue method for a PerformanceCounter instance.

Process

Provides access to local and remote processes and enables you to start and stop local system processes.

ProcessModule

Represents a.dll or .exe file that is loaded into a particular process.

ProcessModuleCollection

Provides a strongly typed collection of ProcessModule objects.

ProcessPriorityClass

Indicates the priority that the system associates with a process. This value, together with the priority value of each thread of the process, determines each thread's base priority level.

ProcessStartInfo

Specifies a set of values that are used when you start a process.

ProcessThread

Represents an operating system process thread.

ProcessThreadCollection

Provides a strongly typed collection of ProcessThread objects.

ProcessWindowStyle

Specified how a new window should appear when the system starts a process.

SourceFilter

Indicates whether a listener should trace a message based on the source of a trace.

SourceLevels

Specifies the levels of trace messages filtered by the source switch and event type filter.

SourceSwitch

Provides a multilevel switch to control tracing and debug output without recompiling your code.

StackFrame

Provides information about a StackFrame, which represents a function call on the call stack for the current thread.

StackTrace

Represents a stack trace, which is an ordered collection of one or more stack frames.

Stopwatch

Provides a set of methods and properties that you can use to accurately measure elapsed time.

Switch

Provides an abstract base class to create new debugging and tracing switches.

SwitchAttribute

Identifies a switch used in an assembly, class, or member.

SwitchLevelAttribute

Identifies the level type for a switch.

TextWriterTraceListener

Directs tracing or debugging output to a TextWriter or to a Stream, such as FileStream.

ThreadPriorityLevel

Specifies the priority level of a thread.

ThreadState

Specifies the current execution state of the thread.

ThreadWaitReason

Specifies the reason a thread is waiting.

Trace

Provides a set of methods and properties that help you trace the execution of your code. This class cannot be inherited.

TraceEventCache

Provides trace event data specific to a thread and a process.

TraceEventType

Identifies the type of event that has caused the trace.

TraceFilter

Provides the base class for trace filter implementations.

TraceLevel

Specifies what messages to output for the Debug, Trace and TraceSwitch classes.

TraceListener

Provides the abstract base class for the listeners who monitor trace and debug output.

TraceListenerCollection

Provides a thread-safe list of TraceListener objects.

TraceOptions

Specifies trace data options to be written to the trace output.

TraceSource

Provides a set of methods and properties that enable applications to trace the execution of code and associate trace messages with their source.

TraceSwitch

Provides a multilevel switch to control tracing and debug output without recompiling your code.

XmlWriterTraceListener

Directs tracing or debugging output as XML-encoded data to a TextWriter or to a Stream, such as a FileStream.