我正在使用在VS Code上运行的Jayamanne的Python版本0.7.0。将调试器附加到正在运行的进程的文档需要添加额外的代码并配置端口和地址。我想通过简单地选择或指定进程名称或id,必须有一个更简单的方法。
显然,VS Code能够基于Node.JS文档和演示。 Python解释器也能够实现它,因为它是我在Visual Studio 2017上正常调试应用程序的方式。
如何配置VS Code Python以按名称或ID附加到进程?这可能吗?如果没有,为什么文件没有明确说明呢?
答案 0 :(得分:1)
没有“简单”的方法。请遵循您提到的有关“添加额外的代码以及配置端口和地址”的文档。
您只能将C调试器“附加”到任何进程because Windows Debugging API has this functionality上,并提供在幕后工作的所有必需机器,以使此看似容易的操作成为可能(使用OS手段停止目标进程,创建帮助线程)在其中操作内存(包括用int 3
替换机器代码以设置断点),而Visual Stidio使用源代码和PDB文件将内存数据解析为C或C ++级别的构造。
对于Python并非如此:尽管您同样可以进入C级别的流程并使用C API从帮助程序线程中操纵解释器实例(如果您以某种方式获得其地址),则该API中没有提供任何方法来使其脱离传递给它的现有代码,并开始执行您的指令,同时仍然能够访问现有代码。
pdb
通过“现有代码”进入调试会话:解释器在某些时候调用其sets the sys.settrace
callback,以便能够在断点和/或{{3 }}并捕获异常。
您所描述的调试器的作用相同:只是代替了调出控制台提示,它的机器充当服务器,通过套接字从连接的IDE客户端接受命令。