使用断点与跟踪点

本主题适用于:

版本

Visual Basic

C#

F#

C++

Web Developer

学习版

主题适用

主题适用

主题适用

主题适用

主题适用

专业版、高级专业版和旗舰版

主题适用

主题适用

主题适用

主题适用

主题适用

本主题提供有关断点的一些基本信息:

  • 断点标志符号

  • 基本断点

  • 一行中的多个断点

  • 高级断点

  • 断点限制

断点标志符号

源窗口和**“反汇编”**窗口在左侧空白中显示称为标志符号的符号,以此来显示断点位置。 下表描述了这些标志符号。

如果将鼠标光标停在断点标志符号上,将显示可给出断点更多信息的断点提示。 此信息对于错误断点和警告断点来说特别有用。

标志符号

说明

调试标志符号 1

普通断点。 实心的标志符号指示断点已启用。 空心的标志符号指示断点已禁用。

调试标志符号 2

高级断点。 活动/已禁用。 “+”符号指示断点至少有一个附加到它的高级功能(例如条件、命中次数或筛选器)。

调试标志符号 3

映射断点。 活动/已禁用。 断点在 ASP/ASP.NET 代码中设置并映射到对应 HTML 页面中的断点,或者在服务器端脚本文件中设置并映射到对应的客户端脚本文件。

调试标志符号 4

跟踪点。 活动/已禁用。 命中此点则执行指定的操作,但不中断程序的执行。

调试标志符号 5

高级跟踪点。 活动/已禁用。 “+”符号指示跟踪点至少有一个附加到它的高级功能(例如条件、命中次数或筛选器)。

调试标志符号 6

映射跟踪点。 活动/已禁用。 这种跟踪点在 ASP/ASP.NET 代码中设置,它映射到相应 HTML 页中的跟踪点。

调试标志符号 7

断点错误或跟踪点错误。 “X”指示由于出现错误而未能设置断点或跟踪点。

调试标志符号 8

断点警告或跟踪点警告。 感叹号指示由于临时情况而未能设置断点或跟踪点。 通常情况下,这意味着还没有加载断点或跟踪点位置处的代码。 如果附加到某个进程但未加载该进程的符号,也会看到感叹号。 加载代码或符号后,将启用断点,标志符号也将更改。

基本断点

大多数基本断点都设置在源代码行或函数上。 下列主题介绍如何设置和处理这些基本断点:

如何:设置简单断点

如何:设置函数断点

如何:删除断点

如何:启用或禁用断点

如何:编辑断点位置

如何:从“调用堆栈”窗口针对函数调用设置断点

提示

如果一个源文件包含的代码多于 64,000 行,则第 64,000 行后面的行上的断点将不会被命中。

一行中的多个断点

有时候,一个代码行会包含多个可执行语句。 在这种情况下,可在一行中设置多个断点。 在包含当前所选断点的代码语句周围会显示一个框。 此框可用于区分同一代码行中的多个断点。 可以在**“断点”**窗口中选择断点,也可以通过单击源窗口中包含断点的语句来选择。

高级断点

如果安装了 Visual C++ 速成版或 Visual Studio(任何版本),则可以设置更高级的断点,创建具有高级功能的断点以及通过功能更强大的方法来处理断点。

对于一些任务,您在设置 Visual Studio 时选择的默认 IDE 设置可能会隐藏所需的菜单命令。 有关更多信息,请参见如何:还原隐藏的调试器命令

针对“内存地址”和“内存更改”的断点

您可以在内存地址上设置断点。 有关更多信息,请参见如何:设置地址断点。 在 C/C++ 中,您可以设置在内存更改时被命中的断点。 有关更多信息,请参见如何:设置数据断点(仅限本机)

筛选器、命中次数和条件

筛选器、命中次数和条件是可以附加到任何类型的断点(包括跟踪点)的高级功能。

  • 通过筛选器,可以将断点设置在指定的计算机、进程和线程上。 在调试运行于多个处理器上的应用程序时,筛选器非常有用。 有关更多信息,请参见如何:指定断点筛选器

  • 命中次数跟踪断点的命中次数。 默认情况下,每次命中断点时断点都中断代码的执行。 您可以更改此行为,以便仅当命中次数等于或超过指定值或者仅当命中次数为给定值的倍数时,断点才中断代码。 仅为调试会话保留指定的命中次数。 有关更多信息,请参见如何:指定命中次数

  • 条件是一个表达式,通过计算该表达式来确定断点是否中断代码。 有关更多信息,请参见如何:指定断点条件

高级断点接口

超级用户可以利用下列主题所述的高级功能:

如何:使用“断点”窗口

如何:删除断点

如何:启用或禁用断点

断点限制

避免在调试混合模式(兼有本机代码和托管代码)时在系统组件上设置断点。 在混合模式调试期间,如果在系统组件上设置断点,则会导致公共语言运行时中断并使调试器停止响应。 有关更多信息,请参见如何:调试混合模式应用程序

调试器不会自动附加到 XML Web services,除非您单步执行调用。 这意味着,如果您不进行单步调用,则不会命中 XML Web services 中设定的任何断点。 如果您尝试使用**“开始调试”“继续”而不是“逐语句”**运行到断点,则不会命中断点。

有关脚本文件中映射断点的局限性的更多信息,请参见脚本调试的限制

请参见

其他资源

调试器指南