DebuggableAttribute.DebuggingModes 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定实时 (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
- 继承
- 属性
字段
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 属性设置为 请注意,与 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 。
适用于
反馈
https://aka.ms/ContentUserFeedback。
即将推出:在整个 2024 年,我们将逐步取消以“GitHub 问题”作为内容的反馈机制,并将其替换为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈