VisualStudioCode-Python 调试-执行时进入外部函数的代码

在 Python 项目中,如何告诉内置的 VSCode 调试器在执行时单步执行来自其他库的函数代码?

我知道通过添加一个

"debugOptions": ["DebugStdLib"]

然而,似乎不可能强制调试器进入非标准模块的代码,例如您自己编写并导入到当前文件中的那些模块。

30909 次浏览

调试器配置

"debugOptions": ["DebugStdLib"]

实际上是在 发射 Json中加入了 将进入用户定义和 pip 安装的模块,与主要问题中所写的相反。

为了改进约翰 · 史密斯所接受的答案,值得一提的是现在这个选项已经被重新命名了。新的选择是

"justMyCode": false

根据文件

如果省略或设置为 True (默认值) ,则将调试限制为 仅用户编写的代码。设置为 False 也可以调试 标准库函数。

这是通过自定义调试器来完成的。

如果你还没有,你需要初始化调试器定制。可以通过在侧栏中打开调试器部分并选择 create a launch.json file来实现这一点。

完成此操作后,将在工作区中的 .vscode文件夹中创建一个 launch.json文件。

编辑这个文件,它看起来像这样:

{
...,
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}

"justMyCode": false添加到 "Python: Current File"配置中,如下所示:

{
...,
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": false
}
]
}

对于 VisualStudio 代码版本1.59.0,为 True。

参考文献: Https://code.visualstudio.com/docs/python/debugging

大多数时候,我调试的是单元测试,而不是正在运行的应用程序。

如果你的情况也是这样,你可以使用:

然后使用插件页面中提到的以下 发射 Json:

    {
"version": "0.2.0",
"configurations": [
{
"name": "Debug test",
"type": "python",
"request": "attach",
"console": "externalTerminal",
"justMyCode": false,
"stopOnEntry": true,
"envFile": "${workspaceFolder}/.env.test",
"purpose": ["debug-test"]
}
]
}

对于那些使用标准 VSCode 调试器的用户来说,可能需要对如何在 VS Code 中配置此调试器做一些说明

按如下方式创建调试器配置

打开你的 .vscode/launch.json

将配置 {}添加到配置列表:

"configurations": []

这个会被内置的 VSCode 调试器识别出来:

{
"name": "Python: Debug Tests",
"type": "python",
"request": "launch",
"program": "${file}",
"purpose": ["debug-test"],
"console": "integratedTerminal",
"justMyCode": false
}

要点:

  1. purpose应该设置为[“ debug-test”]
  2. "justMyCode":应设置为 false。

参考文献: 正式 VSCode 文档