Loading

在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流程即可。之后的步骤与不带参数的程序调试一致。

posted @ 2021-02-01 16:33  JavicxhloWong  阅读(9413)  评论(0编辑  收藏  举报