现已发布!阅读有关 11 月新功能和修复的信息。

VS Code 中的 Python 调试

Python 扩展通过 Python 调试器扩展支持对多种类型的 Python 应用程序进行调试。有关基本调试的简短演练,请参阅教程 - 配置和运行调试器。另请参阅 Flask 教程。这两个教程演示了设置断点和单步执行代码等核心技能。

有关检查变量、设置断点和不依赖于语言的其他活动等常规调试功能,请查看 VS Code 调试

本文主要介绍 Python 特定的调试配置,包括特定应用程序类型和远程调试的必要步骤。

Python 调试器扩展

Python 调试器扩展 与 VS Code 的 Python 扩展自动安装。它为多种类型的 Python 应用程序(包括脚本、Web 应用程序、远程进程等)提供了带有 debugpy 的调试功能。

要验证它是否已安装,请打开 扩展 视图(⇧⌘X (Windows, Linux Ctrl+Shift+X)),然后搜索 @installed python debugger。你应该在结果中看到 Python 调试器扩展列出。

Python Debugger extension shown in installed extensions view in VS Code.

你可以参考扩展的 README 页面,了解有关支持的 Python 版本的信息。

初始化配置

配置驱动 VS Code 在调试会话期间的行为。配置在存储在你工作区中的 .vscode 文件夹中的 launch.json 文件中定义。

注意:要更改调试配置,你的代码必须存储在文件夹中。

要初始化调试配置,首先在侧边栏中选择 运行 视图

Run icon

如果尚未定义任何配置,你将看到一个 运行和调试 按钮和一个用于创建配置 (launch.json) 文件的链接

Debug toolbar settings command

要生成带有 Python 配置的 launch.json 文件,请执行以下步骤

  1. 选择 创建 launch.json 文件 链接(在上图中概述)或使用 运行 > 打开配置 菜单命令。

  2. 从调试器选项列表中选择 Python 调试器

  3. 将从命令面板打开一个配置菜单,允许你选择要用于 Python 项目文件的调试配置类型。如果要调试单个 Python 脚本,请在出现的 选择调试配置 菜单中选择 Python 文件

    List of Python debugger configuration options

    注意:通过“调试”面板、F5运行 > 启动调试 启动调试会话时,如果不存在任何配置,也会显示调试配置菜单,但不会创建 launch.json 文件。

  4. 然后,Python 调试器扩展会创建并打开一个 launch.json 文件,其中包含基于你先前选择的内容(在本例中为 Python 文件)的预定义配置。你可以修改配置(例如,添加参数),还可以添加自定义配置。

    Configuration json

配置属性的详细信息将在本文后面的标准配置和选项中介绍。本文的调试特定应用程序类型下也描述了其他配置。

其他配置

默认情况下,VS Code 仅显示 Python 调试器扩展提供的最常见配置。你可以使用列表中显示的 添加配置 命令和 launch.json 编辑器,选择要包含在 launch.json 中的其他配置。当你使用该命令时,VS Code 会提示你提供所有可用配置的列表(请务必选择 Python 选项)

Adding a new Python debugging configuration

选择 使用进程 ID 附加 会产生以下结果:已添加配置

有关所有这些配置的详细信息,请参阅调试特定应用程序类型

在调试期间,状态栏会显示当前配置和当前调试解释器。选择配置会弹出一个列表,你可以从中选择其他配置

Debugging Status Bar

默认情况下,调试器使用为你工作区选择的同一解释器,就像 VS Code 的 Python 扩展的其他功能一样。要专门为调试使用其他解释器,请在适用调试器配置的 launch.json 中设置 python 的值。或者,使用状态栏上的 Python 解释器指示器来选择其他解释器。

基本调试

如果你只对调试 Python 脚本感兴趣,最简单的方法是选择编辑器上运行按钮旁边的向下箭头,然后选择 Python 调试器:调试 Python 文件

Debug button on the top-right of the editor

如果你希望使用 Flask、Django 或 FastAPI 调试 Web 应用程序,Python 调试器扩展会根据 运行和调试 视图下项目结构在 显示所有自动调试配置 选项下提供动态创建的调试配置。

Show all automatic debug configurations option on the run view

但是,如果你希望调试其他类型的应用程序,可以通过单击 运行 视图中的 运行和调试 按钮来启动调试器。

Run the debugger

如果未设置任何配置,你将获得调试选项列表。在这里,你可以选择相应的选项来快速调试代码。

两个常见选项是使用 Python 文件 配置来运行当前打开的 Python 文件,或者使用 使用进程 ID 附加 配置将调试器附加到已在运行的进程。

有关创建和使用调试配置的信息,请参阅初始化配置其他配置 部分。添加配置后,可以从下拉列表中选择它,然后使用 启动调试 按钮 (F5) 启动它。

Start debugging button in the Run and Debug view

命令行调试

如果你的 Python 环境中安装了 debugpy,也可以从命令行运行调试器。

安装 debugpy

你可以使用 python -m pip install --upgrade debugpydebugpy 安装到你的 Python 环境中。

提示:虽然不是必需的,但建议使用虚拟环境。你可以通过打开命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 并运行 Python:创建虚拟环境 命令 () 在 VS Code 中创建虚拟环境。

命令行语法

调试器命令行语法如下所示

python -m debugpy
    --listen | --connect
    [<host>:]<port>
    [--wait-for-client]
    [--configure-<name> <value>]...
    [--log-to <path>] [--log-to-stderr]
    <filename> | -m <module> | -c <code> | --pid <pid>
    [<arg>]...

示例

从命令行中,你可以使用以下语法,使用指定的端口 (5678) 和脚本启动调试器。此示例假设脚本长时间运行,并省略 --wait-for-client 标志,这意味着脚本不会等待客户端附加。

python -m debugpy --listen 5678 ./myscript.py

然后,你将使用以下配置从 VS Code Python 调试器扩展进行附加。

{
  "name": "Python Debugger: Attach",
  "type": "debugpy",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}

注意:对于 listen,指定主机是可选的,默认情况下使用 127.0.0.1。

如果你想调试远程代码或在远程机器或容器中运行的 Docker 容器中的代码,你需要修改之前的 CLI 命令来指定主机。

python -m debugpy --listen 0.0.0.0:5678 ./myscript.py

关联的配置文件将如下所示。

{
  "name": "Attach",
  "type": "debugpy",
  "request": "attach",
  "connect": {
    "host": "remote-machine-name", // replace this with remote machine name
    "port": 5678
  }
}

注意:请注意,当你指定除 127.0.0.1localhost 之外的主机值时,你正在打开一个端口以允许任何机器访问,这会带来安全风险。进行远程调试时,你应该确保采取适当的安全预防措施,例如使用 SSH 隧道。

命令行选项

标志 选项 描述
--listen--connect [<主机>:]<端口> 必需。指定调试适配器服务器等待传入连接 (--listen) 或连接到正在等待传入连接的客户端 (--connect) 的主机地址和端口。这与 VS Code 调试配置中使用的地址相同。默认情况下,主机地址为 localhost (127.0.0.1)
--wait-for-client 可选。指定在调试服务器建立连接之前,代码不应运行。此设置允许你从代码的第一行开始调试。
--log-to <路径> 可选。指定用于保存日志的现有目录的路径。
--log-to-stderr 可选。启用 debugpy 以将日志直接写入 stderr。
--pid <进程 ID> 可选。指定要将调试服务器注入的已在运行的进程。
--configure-<名称> <值> 可选。设置调试属性,该属性必须在客户端连接之前为调试服务器所知。此类属性可以直接在启动配置中使用,但必须以这种方式为附加配置设置。例如,如果你不希望调试服务器自动将其自身注入到你正在附加的进程创建的子进程中,请使用 --configure-subProcess false

注意[<arg>] 可用于将命令行参数传递给正在启动的应用。

通过网络连接附加进行调试

本地脚本调试

有时你可能需要调试由另一个进程在本地调用的 Python 脚本。例如,你可能正在调试一个 Web 服务器,该服务器为特定的处理作业运行不同的 Python 脚本。在这种情况下,你需要将 VS Code 调试器附加到已启动的脚本。

  1. 运行 VS Code,打开包含脚本的文件夹或工作区,如果工作区中尚不存在 launch.json,请创建一个。

  2. 在脚本代码中,添加以下内容并保存文件

    import debugpy
    
    # 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1
    debugpy.listen(5678)
    print("Waiting for debugger attach")
    debugpy.wait_for_client()
    debugpy.breakpoint()
    print('break on this line')
    
  3. 使用 终端:创建新终端 打开一个终端,这将激活脚本选定的环境。

  4. 在终端中,安装 debugpy 包

  5. 在终端中,使用脚本启动 Python,例如 python3 myscript.py。你应该看到代码中包含的 “Waiting for debugger attach” 消息,并且脚本在 debugpy.wait_for_client() 调用处停止。

  6. 切换到 运行和调试 视图 (⇧⌘D (Windows, Linux Ctrl+Shift+D)),从调试器下拉列表中选择适当的配置,然后启动调试器。

  7. 调试器应该在 debugpy.breakpoint() 调用处停止,从那里你可以正常使用调试器。你还可以选择使用 UI 在脚本代码中设置其他断点,而不是使用 debugpy.breakpoint()

使用 SSH 进行远程脚本调试

远程调试允许你在 VS Code 内本地逐步执行程序,同时它在远程计算机上运行。无需在远程计算机上安装 VS Code。为了提高安全性,你可能希望或需要使用安全连接(例如 SSH)来调试远程计算机。

注意:在 Windows 计算机上,你可能需要安装 Windows 10 OpenSSH 以拥有 ssh 命令。

以下步骤概述了设置 SSH 隧道的常规过程。SSH 隧道允许你在本地计算机上工作,就好像你以比为公共访问打开端口更安全的方式直接在远程计算机上工作一样。

在远程计算机上

  1. 通过打开 sshd_config 配置文件(在 Linux 上位于 /etc/ssh/ 下,在 Windows 上位于 %programfiles(x86)%/openssh/etc 下)并添加或修改以下设置来启用端口转发

    AllowTcpForwarding yes
    

    注意:AllowTcpForwarding 的默认值为 yes,因此你可能不需要进行更改。

  2. 如果你必须添加或修改 AllowTcpForwarding,请重新启动 SSH 服务器。在 Linux/macOS 上,运行 sudo service ssh restart;在 Windows 上,运行 services.msc,在服务列表中选择 OpenSSH 或 sshd,然后选择 重新启动

在本地计算机上

  1. 通过运行 ssh -2 -L 源端口:localhost:目标端口 -i 身份文件 用户@远程地址 来创建 SSH 隧道,为 目标端口 使用选定的端口,并在 用户@远程地址 中使用适当的用户名和远程计算机的 IP 地址。例如,要在 IP 地址 1.2.3.4 上使用端口 5678,命令将是 ssh -2 -L 5678:localhost:5678 -i 身份文件 用户@1.2.3.4。你可以使用 -i 标志指定身份文件的路径。

  2. 验证你是否可以在 SSH 会话中看到提示。

  3. 在你的 VS Code 工作区中,在 launch.json 文件中创建一个用于远程调试的配置,将端口设置为与 ssh 命令中使用的端口匹配,并将主机设置为 localhost。你在此处使用 localhost,因为你已经设置了 SSH 隧道。

    {
      "name": "Python Debugger: Attach",
      "type": "debugpy",
      "request": "attach",
      "port": 5678,
      "host": "localhost",
      "pathMappings": [
        {
          "localRoot": "${workspaceFolder}", // Maps C:\Users\user1\project1
          "remoteRoot": "." // To current working directory ~/project1
        }
      ]
    }
    

开始调试

现在已经设置了到远程计算机的 SSH 隧道,你可以开始调试了。

  1. 两台计算机:确保可以使用相同的源代码。

  2. 两台计算机:安装 debugpy

  3. 远程计算机:有两种方法可以指定如何附加到远程进程。

    1. 在源代码中,添加以下行,将 address 替换为远程计算机的 IP 地址和端口号(此处仅显示 IP 地址 1.2.3.4 用于说明)。

      import debugpy
      
      # Allow other computers to attach to debugpy at this IP address and port.
      debugpy.listen(('1.2.3.4', 5678))
      
      # Pause the program until a remote debugger is attached
      debugpy.wait_for_client()
      

      listen 中使用的 IP 地址应该是远程计算机的私有 IP 地址。然后你可以正常启动程序,这将导致程序暂停,直到调试器附加。

    2. 通过 debugpy 启动远程进程,例如

      python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
      

      这使用 python3 启动包 myproject,其中远程计算机的私有 IP 地址为 1.2.3.4,并监听端口 5678(你也可以通过指定文件路径而不是使用 -m 来启动远程 Python 进程,例如 ./hello.py)。

  4. 本地计算机:仅当你按照上述方式在远程计算机上修改了源代码时,才需要在源代码中添加一份在远程计算机上添加的相同代码的注释副本。添加这些行可确保两台计算机上的源代码逐行匹配。

    #import debugpy
    
    # Allow other computers to attach to debugpy at this IP address and port.
    #debugpy.listen(('1.2.3.4', 5678))
    
    # Pause the program until a remote debugger is attached
    #debugpy.wait_for_client()
    
  5. 本地计算机:切换到 VS Code 中的 运行和调试 视图 (⇧⌘D (Windows, Linux Ctrl+Shift+D)),选择 Python Debugger: Attach 配置

  6. 本地计算机:在代码中设置要开始调试的断点。

  7. 本地计算机:使用修改后的 Python Debugger: Attach 配置和 “开始调试” 按钮启动 VS Code 调试器。VS Code 应该在你本地设置的断点处停止,允许你逐步执行代码、检查变量并执行所有其他调试操作。你在 调试控制台 中输入的表达式也在远程计算机上运行。

    到 stdout 的文本输出,例如 print 语句的输出,会出现在两台计算机上。但是,来自 matplotlib 等包的图形绘图等其他输出仅出现在远程计算机上。

  8. 在远程调试期间,调试工具栏如下所示

    Debugging toolbar during remote debugging

    在此工具栏上,断开连接按钮 (⇧F5 (Windows, Linux Shift+F5)) 会停止调试器,并允许远程程序运行到完成。重新启动按钮 (⇧⌘F5 (Windows, Linux Ctrl+Shift+F5)) 会在本地计算机上重新启动调试器,但不会重新启动远程程序。仅当你已经重新启动远程程序并需要重新附加调试器时,才使用重新启动按钮。

设置配置选项

首次创建 launch.json 时,有两个标准配置,它们在集成终端(在 VS Code 内部)或外部终端(在 VS Code 外部)中运行编辑器中的活动文件

{
  "configurations": [
    {
      "name": "Python Debugger: Current File (Integrated Terminal)",
      "type": "debugpy",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal"
    },
    {
      "name": "Python Debugger: Current File (External Terminal)",
      "type": "debugpy",
      "request": "launch",
      "program": "${file}",
      "console": "externalTerminal"
    }
  ]
}

特定设置在以下部分中描述。你还可以添加其他设置,例如 args,这些设置未包含在标准配置中。

提示:在一个项目中创建一个运行特定启动文件的配置通常很有帮助。例如,如果你想在启动调试器时始终使用参数 --port 1593 启动 startup.py,请创建一个配置条目,如下所示

 {
     "name": "Python Debugger: startup.py",
     "type": "debugpy",
     "request": "launch",
     "program": "${workspaceFolder}/startup.py",
     "args" : ["--port", "1593"]
 },

名称

提供在 VS Code 下拉列表中显示的调试配置的名称。

类型

标识要使用的调试器的类型;将此项设置为 debugpy 以调试 Python 代码。

请求

指定开始调试的模式

  • launch:在 program 中指定的文件上启动调试器
  • attach:将调试器附加到已在运行的进程。有关示例,请参阅 远程调试

程序

提供 Python 程序入口模块(启动文件)的完整限定路径。值 ${file} 常用于默认配置,它使用编辑器中当前活动的文件。通过指定特定的启动文件,您可以始终确保使用相同的入口点启动程序,而无需考虑打开了哪些文件。例如:

"program": "/Users/Me/Projects/MyProject/src/event_handlers/__init__.py",

您还可以依赖于工作区根目录的相对路径。例如,如果根目录是 /Users/Me/Projects/MyProject,那么您可以使用以下示例:

"program": "${workspaceFolder}/src/event_handlers/__init__.py",

module

提供指定要调试的模块名称的功能,类似于在命令行运行时使用的 -m 参数。有关更多信息,请参阅 Python.org

python

指向用于调试的 Python 解释器的完整路径。

如果未指定,则此设置默认为为您的工作区选择的解释器,这等同于使用值 ${command:python.interpreterPath}。要使用不同的解释器,请在调试配置的 python 属性中指定其路径。

或者,您可以使用在每个平台上定义的自定义环境变量来包含要使用的 Python 解释器的完整路径,这样就不需要其他文件夹路径。

如果您需要将参数传递给 Python 解释器,可以使用 pythonArgs 属性。

pythonArgs

指定要传递给 Python 解释器的参数,使用 "pythonArgs": ["<arg 1>", "<arg 2>",...] 的语法。

args

指定要传递给 Python 程序的参数。参数字符串中用空格分隔的每个元素都应包含在引号内,例如:

"args": ["--quiet", "--norepeat", "--port", "1593"],

如果您想在每次调试运行时提供不同的参数,可以将 args 设置为 "${command:pickArgs}"。这将提示您在每次启动调试会话时输入参数。

注意"${command:pickArgs}"["${command:pickArgs}"] 的解析方式存在差异,特别要注意 [] 的使用。作为数组,所有参数都作为单个字符串传递;如果没有方括号,则每个参数都作为其自己的字符串传递。

stopOnEntry

当设置为 true 时,会在被调试程序的第一行中断调试器。如果省略(默认)或设置为 false,则调试器会将程序运行到第一个断点。

console

指定如何显示程序输出,只要未修改 redirectOutput 的默认值。

输出显示的位置
"internalConsole" VS Code 调试控制台。如果 redirectOutput 设置为 False,则不显示任何输出。
"integratedTerminal"(默认) VS Code 集成终端。如果 redirectOutput 设置为 True,则输出也会显示在调试控制台中。
"externalTerminal" 单独的控制台窗口。如果 redirectOutput 设置为 True,则输出也会显示在调试控制台中。

purpose

使用 purpose 选项,可以通过多种方式配置 运行 按钮。将选项设置为 debug-test,表示该配置应在 VS Code 中调试测试时使用。但是,将选项设置为 debug-in-terminal,表示该配置应仅在访问编辑器右上角的 运行 Python 文件 按钮时使用(无论按钮提供的 运行 Python 文件 还是 调试 Python 文件 选项是否使用)。注意purpose 选项不能用于通过 F5运行 > 开始调试 启动调试器。

autoReload

允许在调试器执行命中断点后代码发生更改时自动重新加载调试器。要启用此功能,请设置 {"enable": true},如下面的代码所示。

{
  "name": "Python Debugger: Current File",
  "type": "debugpy",
  "request": "launch",
  "program": "${file}",
  "console": "integratedTerminal",
  "autoReload": {
    "enable": true
  }
}

注意:当调试器执行重新加载时,在导入时运行的代码可能会再次执行。为避免这种情况,请尝试仅在模块中使用导入、常量和定义,并将所有代码放入函数中。或者,您也可以使用 if __name__=="__main__" 检查。

subProcess

指定是否启用子进程调试。默认为 false,设置为 true 以启用。有关更多信息,请参阅 多目标调试

cwd

指定调试器的当前工作目录,它是代码中使用的任何相对路径的根文件夹。如果省略,则默认为 ${workspaceFolder}(VS Code 中打开的文件夹)。

例如,假设 ${workspaceFolder} 包含一个包含 app.pypy_code 文件夹和一个包含 salaries.csvdata 文件夹。如果在 py_code/app.py 上启动调试器,则数据文件的相对路径会因 cwd 的值而异。

cwd 数据文件的相对路径
省略或 ${workspaceFolder} data/salaries.csv
${workspaceFolder}/py_code ../data/salaries.csv
${workspaceFolder}/data salaries.csv

redirectOutput

当设置为 true(internalConsole 的默认值)时,会导致调试器将程序的所有输出打印到 VS Code 调试输出窗口中。如果设置为 false(integratedTerminal 和 externalTerminal 的默认值),则程序输出不会显示在调试器输出窗口中。

当使用 "console": "integratedTerminal""console": "externalTerminal" 时,通常会禁用此选项,因为没有必要在调试控制台中重复输出。

justMyCode

当省略或设置为 true(默认值)时,将调试限制为仅用户编写的代码。设置为 false 以启用标准库函数的调试。

django

当设置为 true 时,激活特定于 Django Web 框架的调试功能。

sudo

当设置为 true 并与 "console": "externalTerminal" 一起使用时,允许调试需要提升权限的应用程序。使用外部控制台是捕获密码所必需的。

pyramid

当设置为 true 时,确保使用 必要的 pserve 命令启动 Pyramid 应用程序。

env

为调试器进程设置可选的环境变量,这些变量超出了调试器始终继承的系统环境变量。这些变量的值必须作为字符串输入。

envFile

包含环境变量定义的可选文件路径。请参阅 配置 Python 环境 - 环境变量定义文件

gevent

如果设置为 true,则启用 gevent monkey-patched 代码的调试。

jinja

当设置为 true 时,激活特定于 Jinja 模板框架的调试功能。

断点和日志点

Python 调试器扩展支持 断点日志点 来调试代码。有关基本调试和使用断点的简短演练,请参阅 教程 - 配置和运行调试器

条件断点

断点还可以设置为基于表达式、命中计数或两者的组合触发。Python 调试器扩展除了支持整数外,还支持以 ==、>、>=、<、<= 和 % 运算符开头的整数的命中计数。例如,您可以通过设置命中计数 >5 来设置一个在发生五次后触发的断点。有关更多信息,请参阅主 VS Code 调试文章中的 条件断点

在代码中调用断点

在您的 Python 代码中,您可以在调试会话期间的任何想要暂停调试器的地方调用 debugpy.breakpoint()

断点验证

Python 调试器扩展会自动检测在不可执行的行上设置的断点,例如 pass 语句或多行语句的中间。在这种情况下,运行调试器会将断点移动到最近的有效行,以确保代码执行在该点停止。

调试特定应用程序类型

配置下拉列表为常规应用程序类型提供了各种不同的选项

配置 描述
附加 请参阅上一节中的 通过网络连接附加进行远程调试
Django 指定 "program": "${workspaceFolder}/manage.py""args": ["runserver"]。还添加了 "django": true 以启用 Django HTML 模板的调试。
Flask 请参阅下面的 Flask 调试
Gevent "gevent": true 添加到标准集成终端配置。
Pyramid 删除 program,添加 "args": ["${workspaceFolder}/development.ini"],添加 "jinja": true 以启用模板调试,并添加 "pyramid": true 以确保程序使用 必要的 pserve 命令启动。

远程调试和 Google App Engine 也需要特定的步骤。有关调试测试的详细信息,请参阅 测试

要调试需要管理员权限的应用程序,请使用 "console": "externalTerminal""sudo": "True"

Flask 调试

{
    "name": "Python Debugger: Flask",
    "type": "debugpy",
    "request": "launch",
    "module": "flask",
    "env": {
        "FLASK_APP": "app.py"
    },
    "args": [
        "run",
        "--no-debugger"
    ],
    "jinja": true
},

如您所见,此配置指定 "env": {"FLASK_APP": "app.py"}"args": ["run", "--no-debugger"]"module": "flask" 属性用于代替 program。(您可能会在 env 属性中看到 "FLASK_APP": "${workspaceFolder}/app.py",在这种情况下,请修改配置以仅引用文件名。否则,您可能会看到“无法导入模块 C”错误,其中 C 是盘符。)

"jinja": true 设置还启用了 Flask 默认 Jinja 模板引擎的调试。

如果您想在开发模式下运行 Flask 的开发服务器,请使用以下配置:

{
    "name": "Python Debugger: Flask (development mode)",
    "type": "debugpy",
    "request": "launch",
    "module": "flask",
    "env": {
        "FLASK_APP": "app.py",
        "FLASK_ENV": "development"
    },
    "args": [
        "run"
    ],
    "jinja": true
},

故障排除

调试器可能无法工作的原因有很多。有时调试控制台会显示具体原因,但主要原因如下:

  • 请确保已在 VS Code 中安装并启用 Python 调试器扩展,方法是打开 扩展 视图(⇧⌘X (Windows, Linux Ctrl+Shift+X)),然后搜索 @installed python debugger

  • Python 可执行文件的路径不正确:请运行 Python: 选择解释器 命令并查看当前值,以检查您所选解释器的路径。

    Troubleshooting wrong Python interpreter when debugging

  • 您的 launch.json 文件中 "type" 设置为已弃用的值 "python":请将 "python" 替换为 "debugpy",以便使用 Python 调试器扩展。

  • 监视窗口中存在无效表达式:请清除监视窗口中的所有表达式,然后重新启动调试器。

  • 如果您正在使用使用原生线程 API(例如 Win32 CreateThread 函数,而不是 Python 线程 API)的多线程应用程序,则目前需要在要调试的任何文件的顶部包含以下源代码:

    import debugpy
    debugpy.debug_this_thread()
    
  • 如果您正在使用 Linux 系统,则在尝试将调试器应用于任何正在运行的进程时,可能会收到“超时”错误消息。为了防止这种情况,您可以临时运行以下命令:

    echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    

后续步骤

  • Python 环境 - 控制用于编辑和调试的 Python 解释器。
  • 测试 - 配置测试环境,并发现、运行和调试测试。
  • 设置参考 - 探索 VS Code 中与 Python 相关的全部设置。
  • 通用调试 - 了解 VS Code 的调试功能。