当前位置:首页>python>debugpy,一个有趣的 Python 库!

debugpy,一个有趣的 Python 库!

  • 2026-10-14 14:50:27
debugpy,一个有趣的 Python 库!

点击上方卡片关注我

设置星标 学习更多技能

debugpy是由微软官方开发的Python调试适配器,实现了调试适配器协议。它是Visual Studio Code中Python调试功能的核心组件,同时也可以作为独立的调试工具使用。debugpy的主要优势在于支持远程调试、多线程调试和异步代码调试,能够帮助开发者在复杂的生产环境中快速定位和解决问题。

安装

1、基础安装

使用pip进行安装:

pip install debugpy

2、验证安装

安装完成后,可以通过以下代码验证是否安装成功:

import debugpyprint(debugpy.__version__)

如果能够正常输出版本号,说明安装成功。

核心特性:

  • 远程调试支持:可以连接到远程服务器或容器中运行的Python程序进行调试
  • 多线程调试:完整支持多线程程序的断点和变量查看
  • 异步代码调试:原生支持asyncio等异步框架的调试
  • 条件断点:支持设置条件表达式,只在满足条件时暂停
  • 变量监视:实时查看和修改程序运行时的变量值
  • 调用栈追踪:清晰展示函数调用链,方便追踪代码执行路径

基本功能

1、本地程序调试

debugpy可以直接在代码中嵌入调试监听器,实现程序的断点调试,通过在代码中插入wait_for_client调用,程序会在该位置暂停,等待调试器连接后继续执行。

import debugpy# 启动调试监听器debugpy.listen(5678)print("等待调试器连接...")debugpy.wait_for_client()# 你的代码defcalculate(a, b):    result = a + breturn resultx = calculate(10, 20)print(f"结果: {x}")

2、远程调试配置

debugpy最强大的功能之一就是远程调试,可以连接到运行在服务器、Docker容器或云端的Python程序。在远程服务器上启动调试监听后,本地IDE可以通过网络连接进行调试,就像调试本地代码一样方便。

import debugpy# 在远程服务器上启动调试监听# 0.0.0.0 表示接受所有网络接口的连接debugpy.listen(("0.0.0.0", 5678))print("调试服务器已启动,监听端口 5678")# 不等待客户端连接,程序继续运行# debugpy.wait_for_client()  # 如需等待,取消注释# 你的应用代码defmain():    print("应用正在运行...")# 业务逻辑if __name__ == "__main__":    main()

3、断点和变量检查

debugpy支持在代码中设置断点,程序执行到断点位置时会自动暂停。通过breakpoint()函数可以在代码中插入断点,这是Python 3.7+版本的标准断点方式。当程序暂停时,可以在调试器中查看当前作用域内的所有变量值,还可以执行表达式来测试代码逻辑。

import debugpydebugpy.listen(5678)debugpy.wait_for_client()defprocess_data(data):    result = []for item in data:# 在这里设置断点        breakpoint()        processed = item * 2        result.append(processed)return resultdata = [1, 2, 3, 4, 5]output = process_data(data)print(output)

高级功能

1、条件断点和日志点

debugpy支持设置条件断点,只有当指定条件满足时才会触发断点,通过编程方式设置断点条件,可以实现更加灵活的调试策略。

import debugpydebugpy.listen(5678)debugpy.wait_for_client()defanalyze_numbers(numbers):for i, num in enumerate(numbers):# 只在num大于100时暂停if num > 100:            breakpoint()        result = num ** 2        print(f"索引 {i}: {num} 的平方是 {result}")# 测试数据test_data = [10, 50, 150, 200, 30]analyze_numbers(test_data)

2、多线程和异步调试

debugpy完整支持多线程和异步程序的调试,可以在不同线程或协程中设置断点。在多线程程序中,调试器会显示所有活动线程的状态,可以切换到不同线程查看其调用栈和变量。对于异步程序,debugpy能够正确处理await语句和异步上下文,让异步代码的调试变得简单。

import debugpyimport asyncioimport threadingdebugpy.listen(5678)debugpy.wait_for_client()# 异步函数调试asyncdefasync_task(name, delay):    print(f"任务 {name} 开始")await asyncio.sleep(delay)    breakpoint()  # 在异步函数中设置断点    print(f"任务 {name} 完成")returnf"结果_{name}"# 多线程调试defthread_worker(thread_id):    print(f"线程 {thread_id} 启动")    breakpoint()  # 在线程中设置断点    result = thread_id * 10    print(f"线程 {thread_id} 完成,结果: {result}")asyncdefmain():# 创建异步任务    tasks = [async_task(f"Task{i}", i) for i in range(3)]await asyncio.gather(*tasks)# 创建线程    threads = [threading.Thread(target=thread_worker, args=(i,)) for i in range(2)]for t in threads:        t.start()for t in threads:        t.join()if __name__ == "__main__":    asyncio.run(main())

总结

debugpy是Python开发中不可或缺的调试工具,它提供了从本地调试到远程调试的完整解决方案。通过简洁的API和强大的功能,debugpy让复杂程序的调试变得简单高效。无论是多线程程序、异步应用还是运行在远程服务器上的服务,debugpy都能提供可靠的调试支持。其与VS Code的深度集成,使得调试体验更加流畅。掌握debugpy的使用方法,可以大大提高开发效率,减少排查问题的时间。建议开发者在日常开发中充分利用debugpy的各项功能,特别是远程调试和条件断点等高级特性,这将使你的Python开发工作更加得心应手。

💡推荐阅读

如果在编程工具充值使用上遇到麻烦,推荐一个牛逼的中转工具!一次性搞定 Codex 、Claude Code和 gemini,内容介绍和付费兑换详见文末阅读原文。

我整理了一份《AI 编程出海资料》,把普通人从 0 到 1 的起步路径全拆解了,扫下面的二维码或微信搜索 257735添加VX,回复【出海资料】就可以直接领取。
除了基础配置,还有更核心的需求挖掘和网站分析等等。
如果你想进一步系统学习、实操出海项目,👉 点击了解详情:推荐我的AI编程出海训练营!

推荐一个牛逼的中转工具!

实测 4 个爆火 Skill,一句话生成画布/知识库/任务规划/自动发布

炸裂!Anthropic 又杀疯了!

从海外公司注册到 Stripe 收款,跑通了出海收付款全流程(实操分享)

出海建站必备:告别AI味,这两个页面设计 Skills 太牛了!

玩转 Claude Code Hooks:让自动化渗透到每个环节

出海工具全集:覆盖 9 大类别,收藏这一篇就够了

出海网站实战:Stripe 支付接入,从 0 到收款全流程

出海必备:一天搞定5张港卡,我的香港卡办理全攻略

最新文章

随机文章