如何配置VSCode的launch.json实现PyCharm本地进程调试附着功能?
配置VSCode实现本地Python进程附着调试(对标PyCharm功能)
我太懂你从PyCharm转VSCode时的这种困惑了——PyCharm的本地进程附着调试用起来太顺手,刚转过来确实会在launch.json上卡壳。别担心,我来一步步帮你搞定,用现在官方推荐的debugpy工具(替代旧的ptvsd)来实现完全一致的功能。
第一步:准备调试依赖
首先确保你的Python环境安装了debugpy,这是VSCode Python调试的官方依赖:
pip install debugpy
第二步:配置目标进程(让它允许调试附着)
和PyCharm不同,VSCode需要你先让外部运行的Python进程开启调试监听,有两种方式可选:
方式1:启动进程时添加调试参数
直接在启动脚本时加上debugpy的监听参数,比如:
python -m debugpy --listen localhost:5678 --wait-for-client your_script.py
--listen localhost:5678:告诉进程在本地5678端口监听调试连接--wait-for-client:可选,加上后进程会暂停执行,直到调试器附着后再继续(适合需要从开头调试的场景)
方式2:在脚本中嵌入调试代码
如果无法修改启动命令,可以在你的Python脚本开头加入以下代码:
import debugpy # 开启本地5678端口的调试监听 debugpy.listen(("localhost", 5678)) # 可选:等待调试器附着后再执行后续代码 debugpy.wait_for_client()
第三步:配置VSCode的launch.json
替换你原来的配置,用下面这个适配debugpy的版本:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Attach to Local Process", "type": "python", "request": "attach", "connect": { "host": "localhost", "port": 5678 }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "${workspaceFolder}" } ] } ] }
关键字段解释
name:自定义配置名称,方便你在VSCode调试面板里识别connect:指定要连接的本地主机和端口,必须和目标进程监听的端口一致(这里是5678)pathMappings:确保VSCode的本地代码路径和目标进程运行的代码路径匹配——因为是本地进程,所以两者都用${workspaceFolder}即可;如果进程运行在其他路径,修改remoteRoot为对应路径
为什么你的旧配置不行?
你原来的配置用的是旧版ptvsd的字段(port、secret、host),现在VSCode官方已经切换到debugpy,不需要secret验证,改用connect块来指定连接信息。
第四步:开始调试
- 启动你要调试的外部Python进程(确保已经开启debugpy监听)
- 在VSCode的调试面板里选择你刚才配置的
Python: Attach to Local Process - 点击启动调试按钮,VSCode就会自动附着到目标进程上——和PyCharm的体验完全一致!
注意事项
- 确保端口号没有被其他进程占用,如果5678被用了,随便换个其他端口(比如5679),只要两边保持一致就行
- 如果你的外部进程是在虚拟环境中运行的,确保VSCode的Python解释器也指向同一个虚拟环境
- 如果不需要等待调试器附着,去掉
--wait-for-client或者debugpy.wait_for_client(),进程会正常运行,你随时可以附着上去调试
内容的提问来源于stack exchange,提问作者Jun Park
相关产品推荐
相关产品推荐

