新闻中心

在VS Code中调试Python的多进程应用

2025-12-05
浏览次数:
返回列表
VS Code调试Python多进程需手动启用子进程调试:在launch.json中设置"subProcess": true,并在子进程代码开头调用debugpy.listen()和debugpy.wait_for_client()。

在vs code中调试python的多进程应用

VS Code 调试 Python 多进程应用默认不支持子进程断点,因为 Python 的 multiprocessing 模块会启动全新解释器进程,而 VS Code 的调试器只附加到主进程。要让子进程也能被调试,关键在于让每个子进程都主动连接到 VS Code 的调试服务(ptvsd 或 debugpy)。

启用 debugpy 并配置 launch.json

新版 VS Code Python 扩展已弃用 ptvsd,统一使用 debugpy(随 python extension 自动安装)。确保你已在项目中安装了 debugpy:

pip install debugpy

然后在 .vscode/launch.json 中添加以下配置(重点是 "subProcess": true):

{ "version": "0.2.0", "configurations": [ { "name": "Python: Multi-Process", "type": "python", "request": "launch", "module": "your_main_module", // 或 "program": "./main.py" "console": "integratedTerminal", "justMyCode": true, "subProcess": true // ? 这是关键!允许调试子进程 } ] }

在子进程中手动触发调试器附加

仅靠 "subProcess": true 不够——它只对通过 multiprocessing.set_start_method("spawn") 启动、且子进程执行路径可被 VS Code 自动识别的场景有效。更可靠的方式是在子进程代码开头显式调用 debugpy.listen()debugpy.wait_for_client()

import debugpy

在子进程函数的最开始插入:

if name == "main":

避免重复监听(主进程不执行这段)

debugpy.listen(5678)  # 端口需与 launch.json 中一致(默认 5678)
print("Waiting for debugger attach...")
debugpy.wait_for_client()  # 阻塞直到 VS Code 附加
print("Debugger attached!")

后续你的业务逻辑...

def worker(): import debugpy debugpy.listen(5678) debugpy.wait_for_client()

✅ 此处打的断点现在可以命中

避免常见陷阱

端口冲突:多个子进程不能共用同一监听端口。若需并发调试多个子进程,可为每个分配不同端口(如 5679、5680),并在 launch.json 中配合 "debugPort" 动态指定(需脚本生成配置);更简单做法是只调试单个子进程,其余跳过调试逻辑。

Windows + spawn 方法:Windows 默认用 spawn,必须保证子进程入口是 if __name__ == "__main__": 保护块,否则会无限递归创建进程。

伴江行购物商城系统 伴江行购物商城系统

傻瓜式的程序安装和调试,用户无需考虑系统的安装维护,美观、友好的展示铺面,设计中应用了多种网络安全技术,顾客可以方便的查询并订购商品,用户可以方便的定义各种商品信息,系统选用强大的数据库保存各类信息,系统支持多种浏览器,功能模块清晰实用强大,系统有着良好的扩充性和升级性,强大的在线支付系统和订单系统登陆地址/admin/login.asp后台登陆账号:admin密码:admin

伴江行购物商城系统 0 查看详情 伴江行购物商城系统

fork 方法不生效:Linux/macOS 默认 fork,子进程继承主进程的调试状态,但 VS Code 无法自动接管 fork 出的子进程。此时仍需手动调用 debugpy.listen()

终端输出干扰:启用 "console": "integratedTerminal" 可看到子进程打印的 Waiting for debugger attach...,方便确认是否进入调试等待。

替代方案:用 attach 模式逐个调试

如果 launch 模式不稳定,可改用 attach 方式:

  • 先运行程序(不调试),子进程启动后打印出其 PID 和监听端口
  • 在 VS Code 中新增一个 attach 配置,指定对应 PID 或端口
  • 手动点击「Attach to Process」选择子进程,或用配置自动连接

这种方式更灵活,适合调试特定子进程,但自动化程度低。

基本上就这些。核心是理解:VS Code 不自动穿透 multiprocessing,得靠 debugpy 主动“暴露自己”并等待连接。配好 "subProcess": true + 子进程里加两行 debugpy 代码,90% 的多进程调试需求就能覆盖。

以上就是在VS Code中调试Python的多进程应用的详细内容,更多请关注其它相关文章!


# 并在  # 互点宝seo教程  # 雅安网站推广哪家强些  # seo sem 的考核标准  # 青岛正宗网站优化价格  # 网站关键词排名推广平台  # 玉林强大seo推广  # 附近推广营销方案  # 开发区seo排名合作  # aso的关键词排名  # 青岛搜客网站建设  # 调试器  # 这是  # 中为  # 自动生成  # 里加  # python  # 工作流  # 多个  # 购物商城  # 递归  # wi  # macos  # ai  # mac  # 端口  # windows  # json  # js  # vscode  # linux  # 多进程调试 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: QQ邮箱在线使用入口 QQ邮箱个人账号网页版登录  vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法  Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值  GemBox Document HTML转PDF垂直文本渲染问题及解决方案  TikTok国际版官网直达_TikTok国际版官网直达进入在线观看  58动漫网在线官方网 58动漫网正版动漫入口网址  Composer中的^和~符号代表什么_精通Composer版本号语义化约束  理解Python模块与全局变量的作用域管理  css链接悬停下划线样式如何自定义_使用::after结合content和transition  使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性  mc.js游戏直达 mc.js网页免下载版本秒进地址  MAC怎么让Dock栏只显示当前运行的应用_MAC终端命令实现极简Dock栏  Win11 BitLocker密码忘了怎么办 Win11找回BitLocker恢复密钥方法【解决】  抖音网页版怎么|直播|_抖音网页版开播操作指南  12306选座怎么选到临时改签座_12306改签选座策略与步骤  Discord Slash 命令响应超时问题的异步解决方案  深入理解J*a编译器的兼容性选项:从-source到--release  AO3最新官网入口公告_2025AO3镜像站实时查询方法  解决Flask中Quill编辑器内容提交失败及TypeError的指南  Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧  composer的"require-dev"部分是用来做什么的?  sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置  夸克AO3官网入口_AO3镜像网站2025推荐  React列表渲染与独立状态管理:避免全局状态影响局部更新  抖音怎么赚钱_抖音创作者变现方法与途径指南  解决Python单元测试中Mock异常方法调用计数为零的问题  高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】  J*aScript 字符串标签转换:使用正则表达式高效替换  QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口  基于动态规划的房屋花卉种植最小成本算法详解  Win10系统怎么查看已安装更新_Win10卸载有问题的更新补丁  Mac终端命令大全_Mac常用Terminal指令速查  星露谷物语官网入口 星露谷物语游戏官网入口  抖音未来赚钱的新趋势 2025年值得关注的变现风口分析  AO3官方在线访问地址 Archive of Our Own最新镜像合集  Python实时数据流中的动态最值查找策略  黑猫投诉统一入口官网 消费者权益保护投诉平台  Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】  不同用户不同价格! 索尼开启账户个性化定价测试  ArrayList与LinkedList核心操作的Big-O复杂度分析  J*aScript动态修改指定div内所有a标签样式指南  千牛数据看板网页版_千牛数据看板网页版访问方法  支付宝如何设置安全保护_支付宝安全设置的全面教程  Flexbox布局实践:实现粘性导航栏与底部固定页脚  蛙漫画网页版全站入口 蛙漫热门作品免费浏览  实现分段式页面滚动导航:CSS与J*aScript教程  PySpark中从现有列右侧提取可变长度字符创建新列的教程  夸克浏览器网页版最新地址 夸克浏览器官方入口合集  Win11怎么合并任务栏图标 Win11开启任务栏合并减少图标占空间【方法】  Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问 

搜索