DebuggableAttribute.DebuggingModes Enumeration

Specifies the debugging mode for the just-in-time (JIT) compiler.

This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.

Namespace:  System.Diagnostics
Assembly:  mscorlib (in mscorlib.dll)


<FlagsAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration DebuggingModes
public enum DebuggingModes


Member name Description
Supported by Silverlight for Windows PhoneSupported by Xbox 360 None In the .NET Framework for Silverlight, just-in-time (JIT) tracking information is always generated. This flag has the same effect as Default.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 Default Use the default behavior for the just-in-time (JIT) compiler, which includes enabling optimizations, disabling Edit and Continue support, and using symbol store sequence points if they are present. In the .NET Framework for Silverlight, JIT tracking information is always generated. This makes it possible for the debugger to match up a chain of MSIL with its machine code counterpart, and to track where local variables and function arguments are stored.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 DisableOptimizations Disable optimizations performed by the compiler to make your output file smaller, faster, and more efficient. Optimizations result in code rearrangement in the output file, which can make debugging difficult. Typically, optimization should be disabled while debugging.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 IgnoreSymbolStoreSequencePoints Use the implicit MSIL sequence points, not the program database (PDB) sequence points. The symbolic information typically includes at least one MSIL offset for each source line. When the just-in-time (JIT) compiler is about to compile a method, it asks the profiling services for a list of MSIL offsets that should be preserved.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 EnableEditAndContinue Enable Edit and Continue. This feature enables you to change your source code while your program is in break mode. The ability to Edit and Continue is compiler-dependent.


The DebuggableAttribute.DebuggingModes enumeration specifies how the runtime will track information that is important to the debugger during code generation. This information helps the debugger provide a rich debugging experience. Calling the DebuggableAttribute(DebuggableAttribute.DebuggingModes) constructor with a modes parameter value of Default is equivalent to calling the DebuggableAttribute(Boolean, Boolean) constructor with an isJITTrackingEnabled parameter value of true.

Sequence points are used to indicate locations in the Microsoft intermediate language (MSIL) code that a debugger user will want to reference uniquely, for example, to set a breakpoint. The JIT compiler does not compile the MSIL at two sequence points into a single native instruction. By default, the JIT compiler examines the symbol store in the program database (PDB) file for a list of additional sequence points. However, loading the PDB file requires that the file be available and adversely affects performance. Compilers can emit implicit sequence points in the MSIL code stream by using MSIL nop instructions. Such compilers should set the IgnoreSymbolStoreSequencePoints flag to prevent the common language runtime from loading the PDB file.


The DebuggableAttribute.DebuggingModes enumeration is primarily used by language developers. Generally, it is not used in application development. Development environments use DebuggableAttribute.DebuggingModes based on compiler parameters such as /debug and /optimize.

Version Information


Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0


For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

See Also