VS Code是一款非常好用的编辑器,它的代码调试工具其实也非常强大,但是许多人都不知道该怎么用,今天就来学习怎么用它调试Python代码吧。
1.准备
既然是用VS Code调试Python代码,那当然你得先安装好Python啦。打开VS Code,如下图所示安装Python扩展:
![](https://pic4.zhimg.com/80/v2-d7841a05058a0ee91ebf06d00e24c64f_1440w.webp)
2.配置调试环境
打开VS Code的DEBUG设置,先点击左边的虫子,再点击上面的齿轮:
![](https://pic3.zhimg.com/80/v2-0cd8bc6f52a9d7bc894015369bee3876_1440w.webp)
点击后提示选择一种语言,选择Python。然后要指定相应的文件类型,可以看到,它支持许多种Python的调试方法,有Django, Flask, 甚至是 Pyramid. 由于下面我们要讲的只是单文件的代码调试,因此选择Python File.
![](https://pic2.zhimg.com/80/v2-1623284037508432da83bfcdb0fcb621_1440w.webp)
![](https://pic4.zhimg.com/80/v2-d5cd369b929734b31d156712572e8b7f_1440w.webp)
然后会自动在当前文件夹的根目录/.vscode中生成一个launch.json的配置文件,打开后你会发现长这个样子:
![](https://pic4.zhimg.com/80/v2-26af09b2b29f3d83ab8cffe987fa602f_1440w.webp)
下面是这些字段的说明:
1.name: 当前DEBUG配置的名称。
2.Type: 指什么语言。
3.request是最重要的参数,它能选择两种类型,一个是launch模式,一个是attach模式:
launch模式:由VS Code来启动一个独立的具有debug功能的程序。
attach模式:监听一个已启动的程序(其必须已经开启debug模式)。
大多数情况下,调试Python都是用launch模式。少数情况下,你无法通过新建独立程序来调试(如要与浏览器相结合的程序,launch模式会导致你大部分浏览器插件失效),这时候就需要attach模式。
4.program: 文件的绝对路径,可以使用变量来灵活指定。
5.console: 终端的类型, integratedTerminal 指使用VSCode终端。
如果想指定一个目标文件为执行文件,修改program值:
{
"program": "${workspaceFolder}/run.py"
}
${workspaceFolder}为项目根目录
添加执行参数
在configurations里添加args键:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args": ["9000"]
}
]
}
args是一个数组,参数按顺序传入。
3.编写一段调试用的代码
我们先随便编写一串代码,来演示怎么查看变量的值:
import random
a = random.randint(0,100)
b = random.randint(0,100)
print(a*b)
打开debug面板,点击绿色的播放按钮,就会在代码块上方出现一个控制条,点击单步调试,就能够一行行地执行代码:
第二行执行完毕后,左边便会出现a变量相应的值:
这样,通过调试,你能清楚知道a*b的结果中,a和b分别对应的值。
但是,在工作生活中,我们自己写的模块、代码很少有需要调试的时候。只有当我们使用别的人框架或者别人的开源模块时,才时常会遇到问题,这时候调试工具才能发挥出最大的功效,比如下面这个例子:
import sys
f = open('20191206/myfile.txt')
s = f.readline()
print(s)
像这种编码问题,用调试工具是非常容易解决的:
先打一个断点:
![](https://pic1.zhimg.com/80/v2-d4036b3484506ce1e9c967ea0fbfc018_1440w.webp)
进行调试,运行到报错的这一句话时,左边有f对象的详细信息,点击后可以看到encoding参数是cp936,而我们文件里的字符串本身是utf-8的,因此,我们在打开文件的时候要设置打开编码。
![](https://pic1.zhimg.com/80/v2-b5130c037ba9d1699fcfd4cf6110386c_1440w.webp)
修改代码如下即可正常运行:
import sys
f = open('20191206/myfile.txt', encoding='utf-8')
s = f.readline()
print(s)
转载自:https://zhuanlan.zhihu.com/p/142642410