在VSCode中调试带参数的Python程序
背景
VSCode的用户通常在调试Python程序时设置完断点直接按F5键便可以开始调试,而有时代码需要从外部获得一些参数来运行,因此在调试需要外部参数的Python程序时,做法要比之前稍微复杂一点。接下来,记录两种使用VSCode可视化调试带参数的Python程序的方法。
方法
方法一:将参数直接写入到launch.json文件中
如图,点击VSCode菜单栏中的运行,再点击打开配置。
在弹出的launch.json文件中,找到一个名叫"configurations"的参数,大致的形式为:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
}
}
加入一个"args"参数,写入要传给执行文件的参数。例子中写入两个参数"arg1"与"arg2",值分别为"xxx"与"xxx"。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件"
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args": [
"arg1", "xxx",
"arg2", "xxx",
]
}
}
添加完配置信息后,设置断点,按F5执行文件,会发现终端执行的命令将定义的参数都加进去了。
方法二:还是以命令行的形式赋予参数,执行Python文件
我们知道,当Python文件需要的参数过多时,如果每次参数变换都要重新修改launch.json文件中的配置信息,那将会使过程更加繁琐,降低了工作效率。因此,如果能够将命令行运行与VSCode的可视化断点调试结合起来,会更高效。
首先,需要Python的依赖包debugpy,在工作环境下下载该包:
pip install debugpy
然后修改launch.json文件配置,和上一种方法一致,点击运行,打开配置,将json配置修改如下所示。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Attach",
"type": "python",
"request": "attach",
"connect": {
"host": "localhost",
"port": xxxx
}
}
]
}
其中的端口参数"port",自行指定一个未占用的端口。
我们假设正常运行某Python文件的命令是
python xxx.py -arg1 ARG1 -arg2 ARG2
那么,在想要进行调试环节之前,在VSCode终端命令行中键入命令:
python -m debugpy --listen xxxx --wait-for-client xxx.py -arg1 ARG1 -arg2 ARG2
注意,这里的命令使用了debugpy包,且设置了一个必要的参数--listen,这里监听的端口xxxx由用户指定,和launch.json中设置的端口号一致。
键入命令后正常执行,接下来在程序中想要查看之处设置好断点,按F5键,进入普通的debug流程即可。之后的步骤与不带参数的程序调试一致。