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"
}
解释其中关键的配置选项:
增加 args 配置即可
{
"name":"Python: Current File (Integrated Terminal)_args",
"type":"python",
"request":"launch",
"program":"${file}",
"console":"integratedTerminal",
"args":[
"--port",
"1593"
]
}
重新执行后,可以在控制台看到我们在 settings.json 中添加的--port 和 1593 参数被打印输出了。
如果参数经常需要变化,把参数写死在配置文件里有时也不太方便,我们可以使用 attach 模式来进行调试。
## 安装 debugpy
pip3 install debugpy
{
"name":"Python: Attach",
"type":"python",
"request":"attach",
"connect":{
"host":"localhost",
"port":5678
}
}
python3 -m debugpy --listen 5678 --wait-for-client test_subprocess.py
attach 成功后,跳过中断点后,就能在控制台里看到输出日志了。
如果大家喜欢我写的文章,欢迎大家点赞、收藏、评论留言或者私信与我交流。