VS Code中Python调用C++库时,如何快速确定VS2019需附加的Python进程PID?
如何快速确定调试Python调用C++库时需附加的Python进程PID
问题背景
我在VS Code(版本1.70.3)中搭建了一个调用C库的Python项目,需要调试这个C库,常规调试步骤如下:
- 在Python项目的pytest测试中设置断点
- 通过VS Code的Test Explorer调试测试,等待执行暂停在断点处
- 在Visual Studio Professional 2019的C++源码中设置断点
- 在Visual Studio中点击「调试」->「附加到进程」
- 保持「连接类型」为「默认」、「连接目标」为本地机器名称
- 在「附加到:」选项中选择「Native code」
- 搜索“python”并选择要附加的python.exe进程
问题在于,最后一步会显示多个由VS Code启动的Python进程(通常为3个),仅一个能触发C++断点,但只能通过试错寻找对应PID,VS Code和Visual Studio均未提供相关进程详情。目前临时解决方法是通过VS Code命令面板打开Process Explorer,查看带有--adapter-access-token参数的进程来猜测PID,想知道是否有更简便的方法确定需附加的进程PID。
简便解决方案
方法1:直接在VS Code调试控制台获取PID
当Python测试暂停在断点时,打开VS Code的「调试控制台」,输入并执行以下代码:
import os print(os.getpid())
控制台会直接输出当前正在调试的Python进程PID,拿着这个PID在Visual Studio的「附加到进程」窗口中精准定位即可。
方法2:从VS Code调试会话标题读取PID
启动调试会话后,在VS Code的「运行和调试」侧边栏(快捷键Ctrl+Shift+D)顶部,调试目标的下拉菜单会显示当前进程的标识,格式通常为Python: pytest - [PID],直接提取括号内的数字就是目标PID。
方法3:给目标进程添加自定义命令行标记
修改VS Code的Python测试调试配置文件(.vscode/launch.json),在args字段中添加一个自定义参数,示例如下:
{ "version": "0.2.0", "configurations": [ { "name": "Python: pytest", "type": "python", "request": "launch", "module": "pytest", "args": ["--debug-cpp-target"], "justMyCode": false } ] }
之后在Visual Studio的「附加到进程」窗口中,右键点击Python进程选择「属性」,查看命令行参数,带有--debug-cpp-target标记的就是需要附加的目标进程。
内容的提问来源于stack exchange,提问作者user18337734
相关产品推荐
相关产品推荐

