Python 在 VS Code 中进行调试
Python 扩展通过 Python Debugger 扩展支持对多种 Python 应用程序进行调试。有关基本调试的简短演练,请参阅 教程 - 配置和运行调试器。另请参阅 Flask 教程。这两个教程都演示了设置断点和逐行执行代码等核心技能。
有关通用的调试功能,例如检查变量、设置断点以及其他与语言无关的操作,请参阅 VS Code 调试。
本文档主要介绍 Python 特定的调试配置,包括特定应用程序类型和远程调试的必要步骤。
Python Debugger 扩展
VS Code 的 Python 扩展 会随附自动安装 Python Debugger 扩展。它通过 debugpy 为多种 Python 应用程序(包括脚本、Web 应用、远程进程等)提供调试功能。
要验证是否已安装,请打开“扩展”视图(⇧⌘X(Windows、Linux Ctrl+Shift+X)),然后搜索 @installed python debugger。您应该会在结果中看到 Python Debugger 扩展。
有关支持的 Python 版本信息,请参阅该扩展的 README 页面。
初始化配置
配置决定了 VS Code 在调试会话期间的行为。配置在 `launch.json` 文件中定义,该文件存储在工作区的 `.vscode` 文件夹中。
注意:要更改调试配置,您的代码必须存储在一个文件夹中。
要初始化调试配置,请首先选择侧边栏中的“运行”视图
如果您尚未定义任何配置,您将看到一个“运行和调试”按钮和一个创建配置文件(launch.json)的链接
要生成包含 Python 配置的 `launch.json` 文件,请执行以下步骤
选择“创建 launch.json 文件”链接(如上图所示)或使用“运行” > “打开配置”菜单命令。
从调试器选项列表中选择“Python Debugger”。
命令面板将打开一个配置菜单,允许您为 Python 项目文件选择要使用的调试配置类型。如果您想调试单个 Python 脚本,请在出现的“选择调试配置”菜单中选择“Python File”。
注意:在没有现有配置的情况下,通过调试面板、F5 或“运行 > 启动调试”开始调试会话也会调出调试配置菜单,但不会创建 `launch.json` 文件。
Python Debugger 扩展随后会创建并打开一个 `launch.json` 文件,其中包含基于您先前选择(本例中为“Python File”)的预定义配置。您可以修改配置(例如,添加参数)并添加自定义配置。
配置属性的详细信息将在本文档的后续部分“标准配置和选项”下进行介绍。本文档的“调试特定类型的应用程序”部分也描述了其他配置。
附加配置
默认情况下,VS Code 仅显示 Python Debugger 扩展提供的最常见配置。您可以通过“添加配置”命令(如列表所示)和 `launch.json` 编辑器来选择其他配置以包含在 `launch.json` 中。当您使用该命令时,VS Code 会提示您显示所有可用配置的列表(请确保选择“Python”选项)。
选择“Attach using Process ID”会产生以下结果:
有关所有这些配置的详细信息,请参阅“调试特定类型的应用程序”。
调试期间,状态栏会显示当前配置和当前调试解释器。选择配置会打开一个列表,您可以从中选择不同的配置。
与 VS Code Python 扩展的其他功能一样,调试器默认使用为工作区选择的相同解释器。要为调试专门使用不同的解释器,请在适用的调试器配置的 `launch.json` 中设置 `python` 的值。或者,使用状态栏上的 Python 解释器指示器选择另一个解释器。
基本调试
如果您只对调试 Python 脚本感兴趣,最简单的方法是选择编辑器上运行按钮旁边的向下箭头,然后选择“Python Debugger: Debug Python File”。
如果您想使用 Flask、Django 或 FastAPI 调试 Web 应用程序,Python Debugger 扩展会在“运行和调试”视图中,通过“显示所有自动调试配置”选项,根据您的项目结构提供动态创建的调试配置。
但是,如果您想调试其他类型的应用程序,可以通过“运行”视图,点击“运行和调试”按钮来启动调试器。
当未设置任何配置时,将显示一个调试选项列表。在这里,您可以选择相应的选项来快速调试代码。
两个常见选项是使用“Python File”配置来运行当前打开的 Python 文件,或者使用“Attach using Process ID”配置将调试器附加到正在运行的进程。
有关创建和使用调试配置的信息,请参阅“初始化配置”和“附加配置”部分。添加配置后,可以从下拉列表中选择它,并使用“启动调试”按钮(F5)启动。
命令行调试
如果您的 Python 环境中已安装 `debugpy`,调试器也可以从命令行运行。
安装 debugpy
您可以使用 `python -m pip install --upgrade debugpy` 将 debugpy 安装到您的 Python 环境中。
提示:虽然使用虚拟环境不是必需的,但它是推荐的最佳实践。您可以通过打开命令面板(⇧⌘P(Windows、Linux Ctrl+Shift+P))并运行“Python: Create Virtual Environment”命令()在 VS Code 中创建虚拟环境。
命令行语法
调试器的命令行语法如下
python -m debugpy
--listen | --connect
[
[--wait-for-client]
[--configure-
[--log-to
| --pid
[
示例
从命令行,您可以使用指定的端口(5678)和脚本来启动调试器,如下面的语法所示。此示例假定脚本是长期运行的,并省略了 `--wait-for-client` 标志,这意味着脚本不会等待客户端连接。
python -m debugpy --listen 5678 ./myscript.py
然后,您将使用以下配置从 VS Code Python Debugger 扩展进行附加。
{
"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.1` 或 `localhost` 时,您将打开一个端口以允许任何机器访问,这会带来安全风险。您应该确保在进行远程调试时采取适当的安全措施,例如使用 SSH 隧道。
命令行选项
标志
选项
描述
--listen 或 --connect
[
必需。指定调试适配器服务器等待传入连接(--listen)或连接到等待传入连接的客户端(--connect)的主机地址和端口。这与 VS Code 调试配置中使用的地址相同。默认情况下,主机地址是 `localhost (127.0.0.1)`。
--wait-for-client
无
可选。指定代码在有调试服务器连接之前不运行。此设置允许您从代码的第一行开始调试。
--log-to
可选。指定一个现有目录的路径以保存日志。
--log-to-stderr
无
可选。启用 debugpy 直接将日志写入 stderr。
--pid
可选。指定一个已运行的进程以注入调试服务器。
--configure-
可选。设置一个在客户端连接之前调试服务器必须知道的调试属性。此类属性可以直接用于 *launch* 配置,但必须以这种方式为 *attach* 配置进行设置。例如,如果您不希望调试服务器自动注入到您附加到的进程创建的子进程中,请使用 ` --configure-subProcess false`。
注意:`[
通过网络连接附加进行调试
本地脚本调试
有时您可能需要调试一个被另一个进程在本地调用的 Python 脚本。例如,您可能正在调试一个为特定处理任务运行不同 Python 脚本的 Web 服务器。在这种情况下,您需要在脚本启动后将 VS Code 调试器附加到该脚本。
运行 VS Code,打开包含该脚本的文件夹或工作区,如果尚未存在,则为该工作区创建 `launch.json`。
在脚本代码中,添加以下内容并保存文件
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')
使用“终端: 创建新终端”打开一个终端,这将激活脚本选定的环境。
在终端中,安装 debugpy 包。
在终端中,使用脚本启动 Python,例如 `python3 myscript.py`。您应该会看到代码中包含的“Waiting for debugger attach”消息,并且脚本会在 `debugpy.wait_for_client()` 调用处暂停。
切换到“运行和调试”视图(⇧⌘D(Windows、Linux Ctrl+Shift+D)),从调试器下拉列表中选择适当的配置,然后启动调试器。
调试器应该会停在 `debugpy.breakpoint()` 调用处,此时您可以使用调试器进行正常操作。您也可以选择在脚本代码中使用 UI 设置其他断点,而不是使用 `debugpy.breakpoint()`。
通过 SSH 进行远程脚本调试
远程调试允许您在 VS Code 中本地单步执行在远程计算机上运行的程序。无需在远程计算机上安装 VS Code。为了增加安全性,您可能希望或需要使用安全连接(如 SSH)连接到远程计算机进行调试。
注意:在 Windows 计算机上,您可能需要安装 Windows 10 OpenSSH 才能使用 `ssh` 命令。
以下步骤概述了设置 SSH 隧道的通用过程。SSH 隧道允许您在本地计算机上工作,就像直接在远程计算机上工作一样,这比打开公共访问端口更安全。
在远程计算机上
通过打开 `sshd_config` 配置文件(在 Linux 上位于 `/etc/ssh/`,在 Windows 上位于 `%programfiles(x86)%/openssh/etc`)并添加或修改以下设置来启用端口转发
AllowTcpForwarding yes
注意:AllowTcpForwarding 的默认值为 yes,所以您可能不需要进行更改。
如果必须添加或修改 `AllowTcpForwarding`,请重启 SSH 服务器。在 Linux/macOS 上,运行 `sudo service ssh restart`;在 Windows 上,运行 `services.msc`,在服务列表中选择 OpenSSH 或 `sshd`,然后选择“重启”。
在本地计算机上
通过运行 `ssh -2 -L sourceport:localhost:destinationport -i identityfile user@remoteaddress` 创建 SSH 隧道,其中 `destinationport` 是您选择的端口,`user@remoteaddress` 是相应的用户名和远程计算机的 IP 地址。例如,要使用 IP 地址 1.2.3.4 上的端口 5678,命令将是 `ssh -2 -L 5678:localhost:5678 -i identityfile user@1.2.3.4`。您可以使用 `-i` 标志指定身份文件的路径。
验证您是否可以在 SSH 会话中看到提示。
在您的 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 隧道,您可以开始调试了。
两台计算机:确保提供相同的源代码。
两台计算机:安装 debugpy。
远程计算机:有两种方法可以指定如何附加到远程进程。
在源代码中,添加以下行,将 `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 地址。然后,您可以正常启动程序,使其在调试器附加之前暂停。
通过 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`)。
本地计算机:仅当您已按照上述方法修改了远程计算机上的源代码,然后在源代码中,添加与远程计算机上添加的代码相同的注释掉的副本。添加这些行可确保两台计算机上的源代码逐行匹配。
#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()
本地计算机:切换到 VS Code 中的“运行和调试”视图(⇧⌘D(Windows、Linux Ctrl+Shift+D)),选择“Python Debugger: Attach”配置。
本地计算机:在代码中设置一个断点,您希望从那里开始调试。
本地计算机:使用修改后的“Python Debugger: Attach”配置和“启动调试”按钮启动 VS Code 调试器。VS Code 应该会停止在您本地设置的断点处,允许您单步执行代码、检查变量并执行所有其他调试操作。您在“调试控制台”中输入的表达式也会在远程计算机上运行。
输出到 stdout 的文本(例如 `print` 语句的输出)会同时出现在两台计算机上。然而,其他输出(例如 matplotlib 等包生成的图形)仅出现在远程计算机上。
远程调试期间,调试工具栏如下所示
在此工具栏上,断开连接按钮(⇧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"]
},
name
为显示在 VS Code 下拉列表中的调试配置提供名称。
type
标识要使用的调试器类型;将此项设置为 `debugpy` 以调试 Python 代码。
request
指定启动调试的模式
launch:在 `program` 中指定的文件的调试器上启动
attach:将调试器附加到已运行的进程。请参阅 远程调试 示例。
program
提供 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": ["
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
}
}
注意:当调试器执行重新加载时,在 import 时运行的代码可能会被再次执行。为避免这种情况,请尝试仅在模块中使用 imports、constants 和 definitions,并将所有代码放入函数中。或者,您也可以使用 `if __name__=="__main__"` 检查。
subProcess
指定是否启用子进程调试。默认为 `false`,设置为 `true` 可启用。有关更多信息,请参阅 多目标调试。
cwd
指定调试器的当前工作目录,这是代码中任何相对路径的基础文件夹。如果省略,则默认为 `${workspaceFolder}`(在 VS Code 中打开的文件夹)。
例如,假设 `${workspaceFolder}` 包含一个名为 `py_code` 的文件夹,其中包含 `app.py`,还有一个名为 `data` 的文件夹,其中包含 `salaries.csv`。如果您在 `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` 时,将确保 Pyramid 应用使用 必要的 `pserve` 命令启动。
env
为调试进程设置可选的环境变量,除了系统环境变量之外,调试进程始终会继承系统环境变量。这些变量的值必须作为字符串输入。
envFile
一个包含环境变量定义的文件的可选路径。请参阅 配置 Python 环境 - 环境变量定义文件。
gevent
设置为 `true` 时,将启用对 gevent monkey-patched 代码的调试。
jinja
设置为 `true` 时,将激活特定于 Jinja 模板框架的调试功能。
断点和日志点
Python Debugger 扩展支持用于调试代码的 断点和 日志点。有关基本调试和使用断点的简短演练,请参阅 教程 - 配置和运行调试器。
条件断点
断点还可以设置为基于表达式、命中次数或两者的组合来触发。Python Debugger 扩展支持整数命中计数,以及前面带有 ==、>、>=、<、<= 和 % 运算符的整数。例如,您可以通过设置命中计数 ` >5` 来设置一个在五次后触发的断点。有关更多信息,请参阅主 VS Code 调试文章中的 条件断点。
在代码中调用断点
在您的 Python 代码中,您可以在希望调试器在调试会话期间暂停的任何位置调用 `debugpy.breakpoint()`。
断点验证
Python Debugger 扩展会自动检测设置在不可执行行上的断点,例如 `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
},
故障排除
调试器可能无法正常工作的有多种原因。有时调试控制台会显示具体原因,但主要原因如下
请确保 Python Debugger 扩展已在 VS Code 中安装并启用。为此,请打开“扩展”视图(⇧⌘X(Windows、Linux Ctrl+Shift+X)),然后搜索 ` @installed python debugger`。
Python 可执行文件的路径不正确:通过运行“Python: Select Interpreter”命令并查看当前值来检查所选解释器的路径。
您的 `launch.json` 文件中的 `"type"` 设置为已弃用的值 `"python"`:请将 `"python"` 替换为 `"debugpy"` 以与 Python Debugger 扩展配合使用。
监视窗口中存在无效表达式:清除监视窗口中的所有表达式并重新启动调试器。
如果您使用的是使用本机线程 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 的调试功能。
01/08/2026