持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
导语
记录使用Vscode进行Python项目的调试过程记录。
环境:MacBook M1 Pro
调试文件配置
第一次使用VScode调试时,首先在当前目录下配置调试文件,可以通过Vscode菜单栏中的 ”运行“ 》”打开配置“来进行配置,该配置文件存储在当前文件夹下的.vscode/launch.json。
其信息如下:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"type": "python",
"request": "launch",
"justMyCode": false,
"program": "${file}",
"console": "integratedTerminal",
}
]
}
这里有几个比较重要的字段:
- type:即调试的是一个python文件;
- justMyCode:是否只调试用户自己编写的代码文件,设置为false时将无法在python官方库中进行断点调试;
除此之外,我们可能还会有一些其他的需求,比如设置运行时的系统环境变量、脚本运行的命令行参数以及指定特定的Python解释器。
可以通过以下几个参数来实现:
- python:指定Python的解释器路径;
- env:运行程序文件时加入的系统环境变量(仅对当前运行生效,如设置CUDA_VISIBLE_DEVICES:"3"来指定pytorch模型运行时所使用的GPU)
- args:使用列表形式将运行时所使用的所有命令行参数列出。
综合以上参数,一个完整的示例记录如下:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"python": "/home/jxqi/anaconda3/envs/picard/bin/python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true,
"env": {"CUDA_VISIBLE_DEVICES":"3"},
"args": ["configs/train_t5_small_imdb.json"]
}
]
}
最后需要注意的是:在启动调试时,要确保待执行的python文件是当前的编辑器窗口,在这样的情况下调试才是对该文件进行调试执行。
调试过程选项
首先选择要暂停调试的地方进行断点添加,如下图所示:
断点是最基本的调试功能。我们只需点击行号左边的空白处,VScode就会出现一个小红点,在启动调试后,当程序运行到这里时就会自动暂停。
下面,我们启动调试
程序会自动运行到断点位置暂停,如上图所示:
左上角可以查看当前所有的变量,并且可以添加想要监视的表达式,下方展示了程序的调用堆栈和所设置的所有断点信息。
在命令行界面,可以选择打开”调试控制台“选项进行以下更加自由的表达式处理:
最后来说明一下调试的操作命令:
- F5 继续:即继续运行到下一个断点位置
- F10 单步跳过:即在当前文件中运行一行(如果是函数处理,则不会进入到函数内部)
- F11 单步调试:将会进入到这一行的子函数中(可能会跳到其他文件中)
- shift + F11 单步跳出:跳出由F11进入的子函数 回到被调用的函数外。
- shift +command + F5 重启:重启调试
- shift + F5 停止:终止调试