使用 Visual Studio Code 调试代码

Visual Studio Code 对调试各种类型的应用程序提供了丰富的支持。VS Code 内置了对 JavaScript、TypeScript 和 Node.js 调试的支持。Visual Studio Marketplace 上有各种各样的调试扩展,可以为 VS Code 添加对其他语言和运行时的调试支持。

本文介绍了 VS Code 的调试功能,以及如何在 VS Code 中开始调试。您还将学习如何使用 VS Code 中的 Copilot 来加速设置调试配置和启动调试会话。

以下视频展示了如何在 VS Code 中开始调试。

调试器用户界面

下图显示了调试器用户界面的主要组件

Debugging diagram

  1. 运行和调试视图:显示与运行、调试和管理调试配置设置相关的所有信息。
  2. 调试工具栏:包含最常用调试操作的按钮。
  3. 调试控制台:用于查看在调试器中运行的代码的输出并与之交互。
  4. 调试侧边栏:在调试会话期间,让您与调用堆栈、断点、变量和监视变量进行交互。
  5. 运行菜单:包含最常用的运行和调试命令。

开始调试之前

  1. 从 Visual Studio Marketplace 为您的语言或运行时安装一个调试扩展。

    VS Code 内置了对 JavaScript、TypeScript 和 Node.js 调试的支持。

  2. 为您的项目定义一个调试配置。

    对于简单的应用程序,VS Code 会尝试运行和调试当前活动的文件。对于更复杂的应用程序或调试场景,您需要创建一个 launch.json 文件来指定调试器配置。获取有关创建调试配置的更多信息。

    提示

    VS Code 中的 Copilot 可以帮助您生成 launch.json 文件。有关更多信息,请参阅使用 Copilot 生成调试配置

  3. 在您的代码中设置断点。

    断点是您可以在一行代码上设置的标记,用于告诉调试器在执行到达该行时暂停。您可以通过单击编辑器中行号旁边的边栏来设置断点。

    有关断点的更多信息,请参阅使用断点

启动调试会话

要在 VS Code 中启动调试会话,请执行以下步骤

  1. 打开包含您要调试的代码的文件。

  2. 使用 F5 键启动调试会话,或在运行和调试视图 (workbench.view.debug) 中选择运行和调试

    Simplified initial Run and Debug view

    对于更复杂的调试场景,如附加到正在运行的进程,您需要创建一个 launch.json 文件来指定调试器配置。获取有关调试配置的更多信息。

  3. 从可用调试器列表中选择您要使用的调试器。

    VS Code 会尝试运行和调试当前活动的文件。对于 Node.js,VS Code 会检查 package.json 文件中的 start 脚本,以确定应用程序的入口点。

  4. 当调试会话开始时,调试控制台面板会显示并显示调试输出,状态栏颜色会改变(默认颜色主题为橙色)。

    debug session

  5. 状态栏中的调试状态显示活动的调试配置。选择调试状态可以更改活动的启动配置并开始调试,而无需打开运行和调试视图。

    Debug status

调试操作

一旦调试会话开始,调试工具栏就会出现在窗口顶部。该工具栏包含控制调试会话流程的操作,例如单步执行代码、暂停执行和停止调试会话。

Screenshot that shows the Debug toolbar, with icons to control the flow of the debug session.

下表描述了调试工具栏中可用的操作

操作描述
继续/暂停
F5
继续:恢复正常的程序/脚本执行(直到下一个断点)。
暂停:检查当前行执行的代码并逐行调试。
单步跳过
F10
将下一个方法作为单个命令执行,而不检查或跟踪其组件步骤。
单步进入
F11
进入下一个方法以逐行跟踪其执行。
单步跳出
Shift+F11
在方法或子程序内部时,通过将当前方法的剩余行当作单个命令完成,返回到早前的执行上下文。
重启
Ctrl+Shift+F5
终止当前程序执行,并使用当前运行配置再次开始调试。
停止
Shift+F5
终止当前程序执行。

显示详细信息

如果您的调试会话涉及多个目标(例如,一个客户端和一个服务器),调试工具栏会显示会话列表并允许您在它们之间切换。

提示

使用 debug.toolBarLocation 设置来控制调试工具栏的位置。它可以是默认的 floating(浮动)、docked(停靠)到运行和调试视图,或 hidden(隐藏)。浮动的调试工具栏可以水平拖动,也可以向下拖动到编辑器区域(距离顶部边缘有一定距离)。

Breakpoints

断点是一个特殊的标记,它会在特定点暂停您的代码执行,以便您可以在该点检查应用程序的状态。VS Code 支持多种类型的断点。

设置断点

要设置或取消断点,请单击编辑器边栏或在当前行上使用 F9。

  • 编辑器边栏中的断点通常显示为红色的实心圆。
  • 禁用的断点有一个灰色的实心圆。
  • 当调试会话开始时,无法向调试器注册的断点会变成一个灰色的空心圆。如果在一个不支持实时编辑的调试会话运行时编辑了源代码,也可能发生同样的情况。

(可选)通过启用设置 debug.showBreakpointsInOverviewRuler,可以在编辑器的概览标尺中显示断点。

breakpoints in overview ruler

要更精细地控制断点,请使用运行和调试视图的断点部分。该部分列出了您代码中的所有断点,并提供了额外的操作来管理它们。

Breakpoints

断点类型

条件断点

VS Code 一个强大的调试功能是能够基于表达式、命中次数或两者的组合来设置条件。

  • 表达式条件:只要表达式的计算结果为 true,就会命中该断点。
  • 命中次数命中次数控制了断点在中断执行前需要被命中多少次。是否遵循命中次数以及表达式的确切语法可能因调试器扩展而异。
  • 等待断点:当另一个断点被命中时,该断点被激活(触发的断点)。

添加条件断点

  1. 创建条件断点

    • 在编辑器边栏中右键单击并选择添加条件断点
    • 在命令面板 (Ctrl+Shift+P) 中使用添加条件断点命令。
  2. 选择您要设置的条件类型(表达式、命中次数或等待断点)。

    HitCount

为现有断点添加条件

  1. 编辑现有断点

    • 在编辑器边栏中的断点上右键单击并选择编辑断点
    • 运行和调试视图的断点部分中,为现有断点选择铅笔图标。
  2. 编辑条件(表达式、命中次数或等待断点)。

如果调试器不支持条件断点,添加条件断点编辑条件操作将不可用。

触发断点

触发的断点是一种条件断点,一旦另一个断点被命中,它就会被启用。当诊断代码中仅在特定前提条件后才发生的故障时,它们非常有用。

可以通过右键单击字形边距,选择 添加触发断点,然后选择哪个其他断点启用此断点来设置触发断点。

内联断点

内联断点只有在执行到达与内联断点关联的列时才会被命中。这在调试包含单行多个语句的压缩代码时非常有用。

可以使用 Shift+F9 或在调试会话期间通过上下文菜单设置内联断点。内联断点在编辑器中内联显示。

内联断点也可以有条件。可以通过编辑器左侧边栏的上下文菜单编辑一行上的多个断点。

函数断点

调试器可以支持通过指定函数名来创建断点,而不是直接在源代码中放置断点。这在源代码不可用但函数名已知的情况下很有用。

要创建函数断点,请选择断点部分标题中的 + 按钮并输入函数名。函数断点在断点部分以红色三角形显示。

数据断点

如果调试器支持数据断点,可以从变量视图的上下文菜单中设置它们。在值更改/读取/访问时中断命令会添加一个数据断点,当基础变量的值发生更改/被读取/被访问时命中。数据断点在断点部分以红色六边形显示。

日志点

日志点是断点的一种变体,它不会中断到调试器,而是在调试控制台中记录一条消息。日志点可以帮助您节省时间,因为您不必在代码中添加或删除日志语句。

日志点由一个菱形图标表示。日志消息是纯文本,但也可以包含要在花括号('{}')内求值的表达式。

要添加日志点,请在编辑器左侧边栏中右键单击并选择添加日志点,或在命令面板 (Ctrl+Shift+P) 中使用调试: 添加日志点...命令。您还可以配置设置 debug.gutterMiddleClickAction,以在编辑器边栏中按下鼠标中键时切换日志点。

Logpoints

就像常规断点一样,日志点可以启用或禁用,也可以由条件和/或命中次数控制。

注意

调试器扩展可以选择是否实现日志点。

数据检查

运行和调试视图

在调试会话期间,您可以在运行和调试视图的变量部分检查变量和表达式,或者通过将鼠标悬停在编辑器中的源代码上进行检查。变量值和表达式求值是相对于调用堆栈部分中选定的堆栈帧。

Screenshot of the Variables section in the Run and Debug view.

要在调试会话期间更改变量的值,请在变量部分中的变量上右键单击并选择设置值 (F2)。

此外,您可以使用复制值操作来复制变量的值,或使用复制为表达式操作来复制访问该变量的表达式。然后您可以在监视部分使用此表达式。

变量和表达式也可以在运行和调试视图的监视部分进行求值和监视。

Screenshot of the Watch section in the Run and Debug view.

要按名称或值筛选变量,请在焦点位于变量部分时使用 Ctrl+Alt+F 键盘快捷键,并输入搜索词。

Screenshot of the filter control in the Variables section.

调试控制台 REPL

可以使用调试控制台 REPL (读取-求值-打印循环) 功能来求值表达式。要打开调试控制台,请使用调试窗格顶部的调试控制台操作或使用视图: 调试控制台命令 (Ctrl+Shift+Y)。

在您按下 Enter 后,表达式会被求值,并且调试控制台 REPL 会在您键入时显示建议。如果您需要输入多行,请在行之间使用 Shift+Enter,然后用 Enter 发送所有行进行求值。

调试控制台输入使用活动编辑器的模式,这意味着调试控制台输入支持语法着色、缩进、引号自动闭合和其他语言功能。

Screenshot of the Debug Console.

注意

您必须处于活动的调试会话中才能使用调试控制台 REPL。

多目标调试

对于涉及多个进程(例如,一个客户端和一个服务器)的复杂场景,VS Code 支持多目标调试。在启动第一个调试会话后,您可以启动另一个调试会话。一旦第二个会话启动并运行,VS Code UI 会切换到多目标模式

  • 各个会话现在在调用堆栈视图中显示为顶级元素。

    Callstack View

  • 调试工具栏显示当前的活动会话(所有其他会话都可在下拉菜单中找到)。

    Debug Actions Widget

  • 调试操作(例如,调试工具栏中的所有操作)都在活动会话上执行。可以通过使用调试工具栏中的下拉菜单或在调用堆栈视图中选择不同的元素来更改活动会话。

远程调试

VS Code 不支持跨所有语言的内置远程调试。远程调试是您正在使用的调试扩展的一项功能,您应该查阅该扩展在Marketplace上的页面以获取支持和详细信息。

不过,有一个例外:VS Code 中包含的 Node.js 调试器支持远程调试。有关更多信息,请参阅 Node.js 调试

调试器扩展

VS Code 对 Node.js 运行时有内置的调试支持,可以调试 JavaScript、TypeScript 或任何其他被转译为 JavaScript 的语言。

要调试其他语言和运行时(包括 PHPRubyGoC#PythonC++PowerShell 和许多其他),请在 Visual Studio Marketplace 中查找 Debuggers 扩展,或在顶层运行菜单中选择安装其他调试器

以下是几个包含调试支持的热门扩展

Python

195.2M

ms-python

Python Debugger

100.5M

ms-python

C/C++

91.8M

ms-vscode

CMake Tools

53.3M

ms-vscode

后续步骤

要了解 VS Code 的 Node.js 调试支持,请查看

  • Node.js - 描述了 VS Code 中包含的 Node.js 调试器。
  • TypeScript - Node.js 调试器也支持 TypeScript 调试。

要观看关于调试基础知识的教程,请查看此视频

要了解有关 Copilot 和 VS Code 中 AI 辅助调试的更多信息

要了解通过 VS Code 扩展对其他编程语言的调试支持

要了解 VS Code 的任务运行支持,请访问

  • 任务 - 描述了如何使用 Gulp、Grunt 和 Jake 运行任务,以及如何显示错误和警告。

要编写自己的调试器扩展,请访问

  • 调试器扩展 - 使用一个模拟示例来说明创建 VS Code 调试扩展所需的步骤。

常见问题

支持哪些调试场景?

VS Code 开箱即用地支持在 Linux、macOS 和 Windows 上调试基于 Node.js 的应用程序。Marketplace 中提供的 VS Code 扩展支持许多其他场景。

使用 Visual Studio Code 调试代码 - VSCode 编辑器

使用 Visual Studio Code 编写代码,您可以按照以下步骤进行操作: 1. 下载和安装 Visual Studio Code:在官方网站 https://code.visualstudio.com/ 上下载适用于您的操作系统的安装程序,并按照提示进行安装。 2. 打开 Visual Studio Code:安装完成后,打开 Visual Studio Code。您将看到一个简洁的编辑器界面。 3. 创建或打开项目文件夹:您可以选择创建新的项目文件夹,或者打开已有的项目文件夹。您可以通过点击左侧的资源管理器图标(文件夹图标)来打开一个文件夹。 4. 创建或打开代码文件:在您的项目文件夹中,您可以创建一个新的代码文件,或者打开已有的代码文件。您可以通过点击左上角的文件图标,然后选择“新建文件”或“打开文件”来执行这些操作。 5. 编写代码:您可以开始在代码文件中编写代码了。Visual Studio Code 支持多种编程语言,包括但不限于 Python、JavaScript、C++ 等。您可以在代码文件中输入代码,并利用编辑器提供的语法高亮、自动补全等功能来辅助编写。 6. 运行和调试代码Visual Studio Code 提供了强大的调试功能,您可以配置并运行调试器来调试您的代码。您可以通过点击左侧的调试图标(虫子图标)来打开调试面板,并选择适合您的项目类型的调试配置。 7. 安装扩展:Visual Studio Code 还支持丰富的扩展插件,您可以根据自己的需求安装各种插件来增强编辑器功能。您可以点击左侧的扩展图标(方块加箭头图标)来打开扩展面板,并搜索并安装您需要的插件。 这些是使用 Visual Studio Code 编写代码的基本步骤。您还可以根据自己的需求和喜好进行进一步的个性化配置和使用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值