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 调试器扩展列出。
你可以参考扩展的 README 页面,了解有关支持的 Python 版本的信息。
初始化配置
配置驱动 VS Code 在调试会话期间的行为。配置在存储在你工作区中的 .vscode
文件夹中的 launch.json
文件中定义。
注意:要更改调试配置,你的代码必须存储在文件夹中。
要初始化调试配置,首先在侧边栏中选择 运行 视图
如果尚未定义任何配置,你将看到一个 运行和调试 按钮和一个用于创建配置 (launch.json) 文件的链接
要生成带有 Python 配置的 launch.json
文件,请执行以下步骤
-
选择 创建 launch.json 文件 链接(在上图中概述)或使用 运行 > 打开配置 菜单命令。
-
从调试器选项列表中选择 Python 调试器。
-
将从命令面板打开一个配置菜单,允许你选择要用于 Python 项目文件的调试配置类型。如果要调试单个 Python 脚本,请在出现的 选择调试配置 菜单中选择 Python 文件。
注意:通过“调试”面板、F5 或 运行 > 启动调试 启动调试会话时,如果不存在任何配置,也会显示调试配置菜单,但不会创建
launch.json
文件。 -
然后,Python 调试器扩展会创建并打开一个
launch.json
文件,其中包含基于你先前选择的内容(在本例中为 Python 文件)的预定义配置。你可以修改配置(例如,添加参数),还可以添加自定义配置。
配置属性的详细信息将在本文后面的标准配置和选项中介绍。本文的调试特定应用程序类型下也描述了其他配置。
其他配置
默认情况下,VS Code 仅显示 Python 调试器扩展提供的最常见配置。你可以使用列表中显示的 添加配置 命令和 launch.json
编辑器,选择要包含在 launch.json
中的其他配置。当你使用该命令时,VS Code 会提示你提供所有可用配置的列表(请务必选择 Python 选项)
选择 使用进程 ID 附加 会产生以下结果:
有关所有这些配置的详细信息,请参阅调试特定应用程序类型。
在调试期间,状态栏会显示当前配置和当前调试解释器。选择配置会弹出一个列表,你可以从中选择其他配置
默认情况下,调试器使用为你工作区选择的同一解释器,就像 VS Code 的 Python 扩展的其他功能一样。要专门为调试使用其他解释器,请在适用调试器配置的 launch.json
中设置 python
的值。或者,使用状态栏上的 Python 解释器指示器来选择其他解释器。
基本调试
如果你只对调试 Python 脚本感兴趣,最简单的方法是选择编辑器上运行按钮旁边的向下箭头,然后选择 Python 调试器:调试 Python 文件。
如果你希望使用 Flask、Django 或 FastAPI 调试 Web 应用程序,Python 调试器扩展会根据 运行和调试 视图下项目结构在 显示所有自动调试配置 选项下提供动态创建的调试配置。
但是,如果你希望调试其他类型的应用程序,可以通过单击 运行 视图中的 运行和调试 按钮来启动调试器。
如果未设置任何配置,你将获得调试选项列表。在这里,你可以选择相应的选项来快速调试代码。
两个常见选项是使用 Python 文件 配置来运行当前打开的 Python 文件,或者使用 使用进程 ID 附加 配置将调试器附加到已在运行的进程。
有关创建和使用调试配置的信息,请参阅初始化配置 和 其他配置 部分。添加配置后,可以从下拉列表中选择它,然后使用 启动调试 按钮 (F5) 启动它。
命令行调试
如果你的 Python 环境中安装了 debugpy
,也可以从命令行运行调试器。
安装 debugpy
你可以使用 python -m pip install --upgrade debugpy
将 debugpy 安装到你的 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.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 | <进程 ID> |
可选。指定要将调试服务器注入的已在运行的进程。 |
--configure-<名称> | <值> |
可选。设置调试属性,该属性必须在客户端连接之前为调试服务器所知。此类属性可以直接在启动配置中使用,但必须以这种方式为附加配置设置。例如,如果你不希望调试服务器自动将其自身注入到你正在附加的进程创建的子进程中,请使用 --configure-subProcess false 。 |
注意:
[<arg>]
可用于将命令行参数传递给正在启动的应用。
通过网络连接附加进行调试
本地脚本调试
有时你可能需要调试由另一个进程在本地调用的 Python 脚本。例如,你可能正在调试一个 Web 服务器,该服务器为特定的处理作业运行不同的 Python 脚本。在这种情况下,你需要将 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 源端口:localhost:目标端口 -i 身份文件 用户@远程地址
来创建 SSH 隧道,为目标端口
使用选定的端口,并在用户@远程地址
中使用适当的用户名和远程计算机的 IP 地址。例如,要在 IP 地址 1.2.3.4 上使用端口 5678,命令将是ssh -2 -L 5678:localhost:5678 -i 身份文件 用户@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"]
},
名称
提供在 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.py
的 py_code
文件夹和一个包含 salaries.csv
的 data
文件夹。如果在 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: 选择解释器 命令并查看当前值,以检查您所选解释器的路径。
-
您的
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