DebuggableAttribute.DebuggingModes 枚举

定义

指定实时 (JIT) 编译器的调试模式。

此枚举支持其成员值的按位组合。

public: enum class DebuggableAttribute::DebuggingModes
[System.Flags]
public enum DebuggableAttribute.DebuggingModes
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
public enum DebuggableAttribute.DebuggingModes
[<System.Flags>]
type DebuggableAttribute.DebuggingModes = 
[<System.Flags>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type DebuggableAttribute.DebuggingModes = 
Public Enum DebuggableAttribute.DebuggingModes
继承
DebuggableAttribute.DebuggingModes
属性

字段

Default 1

指示实时 (JIT) 编译器使用其默认行为,包括启用优化、禁用“编辑并继续”支持以及使用符号存储区序列点(如果存在)。 从 .NET Framework 2.0 版本开始,始终生成 JIT 跟踪信息,即方法中相对于本机代码偏移量的 Microsoft 中间语言 (MSIL) 偏移量。

DisableOptimizations 256

禁用编译器为使输出文件更小、更快、更有效而执行的优化。 优化会导致输出文件中的代码重排,这会增加调试的难度。 通常在调试时应禁用优化。 在 2.0 或更高版本中,将这个值与 Default (Default | DisableOptimizations) 组合在一起可启用 JIT 跟踪和禁用优化。

EnableEditAndContinue 4

启用“编辑并继续”。 借助“编辑并继续”,你可以在程序处于中断模式时对源代码进行更改。 “编辑并继续”的能力取决于编译器。

IgnoreSymbolStoreSequencePoints 2

使用隐式 MSIL 序列点,而非程序数据库 (PDB) 序列点。 符号信息中的每个源行通常至少包含一个 Microsoft 中间语言 (MSIL) 偏移量。 当实时 (JIT) 编译器要编译方法时,它会请求分析服务提供应保留的 MSIL 偏移量列表。 这些 MSIL 偏移量称为序列点。

None 0

从 .NET Framework 2.0 版本开始,始终生成 JIT 跟踪信息,并且此标志与 Default 具有相同效果,将 IsJITTrackingEnabled 属性设置为 false 除外。 但是,由于始终启用 JIT 跟踪,所以在版本 2.0 或更高版本中将忽略此属性值。

请注意,与 DisableOptimizations 标志不同,None 标志不能用于禁用 JIT 优化。

注解

DebuggableAttribute.DebuggingModes枚举指定运行时如何在代码生成期间跟踪对调试器重要的信息。 此信息可帮助调试器提供丰富的调试体验。 与 .NET Framework 版本 1.1 不同,版本 2.0 或更高版本不允许通过实时 (JIT) 编译器关闭跟踪。 始终为可调试文件启用 JIT 跟踪。 在版本 2.0 及更高版本中,枚举值具有以下效果。

调试模式 结果
跟踪,已启用 JIT 优化
默认 跟踪,已启用 JIT 优化
DisableOptimizations 跟踪,已启用 JIT 优化
默认|DisableOptimizations 跟踪,JIT 优化已禁用

序列点用于指示Microsoft中间语言 (MSIL) 代码的位置,调试器用户期望能够唯一引用这些代码,例如设置断点。 JIT 编译器确保它不会将两个不同序列点处的 MSIL 编译为单个本机指令。 默认情况下,JIT 编译器检查程序数据库 (PDB) 文件中的符号存储,以获取其他序列点的列表。 但是,加载 PDB 文件需要文件可用,并且会对性能产生负面影响。 从版本 2.0 开始,编译器可以通过使用 MSIL“指令在 MSIL 代码流中发出”隐式序列点”。nop" 此类编译器应设置 IgnoreSymbolStoreSequencePoints 标志以通知公共语言运行时不加载 PDB 文件。

注意

此枚举主要由语言开发人员使用。 它通常不用于应用程序开发。 开发环境基于编译器参数(如 /debug/optimize)使用 DebuggableAttribute.DebuggingModes

适用于