乐趣区

关于python:vscode中调试python代码

vscode 应用的好,真的不比免费软件差。vscode 的代码提醒曾经很好了,debug 性能也不差。

 前提

本文默认 PC 中曾经装置 python3、vscode,微软提供的 python 插件和 Python Extension Pack。

 调试代码

咱们应用如何创立一个超时后不会被 kill 的 python 子过程中的代码来进行调试

import subprocess
from subprocess import TimeoutExpired

if __name__ == '__main__':
    try:
        proc=subprocess.Popen('adb install -g -r -t ~/tmp/app-uiautomator.apk', shell=True, text=True, stdout=subprocess.PIPE)
stdout,errs = proc.communicate(timeout=60)
        print(f'stdout1:\n{stdout}')
    except TimeoutExpired as te:
        print('timeout')
        stdout,errs = proc.communicate()
        print(f'stdout2:\n{stdout}')

 调试设置

关上 vscode 后,应用快捷键 shift+command+ p 后输出 setting

关上设置页面,如没有以下配置,请退出以下配置

configurations 里的代码

{"name":"Python: Current File (Integrated Terminal)",
    "type":"python",
    "request":"launch",
    "program":"${file}",
    "console":"integratedTerminal"
}

解释其中要害的配置选项:

  • name 呈现在调试下拉菜单中的名字
  • type 调试类型
    * request 执行调试的模式,可选 luanch 和 attch 其中之一
  • program 填写须要调试的文件的全门路名字,${file}代表以后关上的文件
    增加后就能够调试以后关上的 python 文件了。

 传递代码运行参数

减少 args 配置即可

{"name":"Python: Current File (Integrated Terminal)_args",
    "type":"python",
    "request":"launch",
    "program":"${file}",
    "console":"integratedTerminal",
    "args":[
        "--port",
        "1593"
    ]
}

从新执行后,能够在控制台看到咱们在 settings.json 中增加的 –port 和 1593 参数被打印输出了。

attach 形式调试

如果参数常常须要变动,把参数写死在配置文件里有时也不太不便,咱们能够应用 attach 模式来进行调试。

 装置 debugpy

pip3 install debugpy

setting.json 配置增加

{
    "name":"Python: Attach",
    "type":"python",
    "request":"attach",
    "connect":{
        "host":"localhost",
        "port":5678
    }
}

 在命令行执行程序

python3 -m debugpy --listen 5678 --wait-for-client test_subprocess.py

 在 vscode 中执行 python attach

attach 胜利后,跳过中断点后,就能在控制台里看到输入日志了。

 参考文档

  • Python debugging in VS Code

 后语

如果大家喜爱我写的文章,欢送大家点赞、珍藏、评论留言或者私信与我交换。

退出移动版