附加到进程在 VS 代码调试器扩展中如何工作?

问题描述 投票:0回答:1

我试图了解当我使用 VS Code 中的调试器附加到进程时会发生/应该发生什么。

我知道我可以在 VS Code 中创建附加启动配置,当我这样做并启动调试配置时,我可以选择我想要附加的进程。现在应该发生什么?

  1. 流程需要满足哪些先决条件才能“可附加”?这个checkend怎么样?
  2. 幕后发生了什么(概念上)?
  3. 我使用的特定调试配置有什么影响?调试器是否需要支持“附加”?
  4. 我可以期望它基本上适用于任何调试器和语言吗?有什么先决条件?
  5. 我可以通过这种方式潜在地调试共享库 (.so / .dll) 吗?

欢迎回答部分问题。并非所有问题都适用。

动机

在这里,我正在寻求对引擎盖下发生的事情的一般理解。然而,最后,我想看看我是否可以通过 GoPy 以某种方式调试嵌入到 Python 包中的 Go 代码。

visual-studio-code debugging python-extensions go-python
1个回答
0
投票

进程需要满足哪些先决条件才能“可附加”?

我很确定这取决于底层技术——特定调试器服务如何工作——它的协议是什么,它最终决定了与该调试服务通信的扩展如何工作,并将有关它的信息转换为 VS Code 的调试器 API .有关该主题的完整信息,请参阅VS 代码调试器扩展开发文档。这是该页面的高级图表:

还有一句话:

VS Code 基于我们引入的用于与调试器后端通信的抽象协议实现通用(与语言无关)调试器 UI。因为调试器通常不实现此协议,所以需要一些中介来使调试器“适应”协议。这个中介通常是一个与调试器通信的独立进程。

我们称这个中介为Debug Adapter(或简称DA),DA和VS Code之间使用的抽象协议是Debug Adapter Protocol(简称DAP)。由于调试适配器协议独立于 VS 代码,它有自己的网站,您可以在其中找到介绍和概述、详细的规范,以及一些包含已知实现和支持工具的列表。 DAP 的历史和背后的动机在这篇博文中进行了解释。

如果您有兴趣了解事物的附加部分,请参阅 https://microsoft.github.io/debug-adapter-protocol/overview#launching-and-attaching,它链接到 https:// microsoft.github.io/debug-adapter-protocol/specification#Requests_Attach,其中说:

attach
请求从客户端发送到调试适配器以附加到已经运行的调试对象。

由于附加是特定于调试器/运行时的,因此此请求的参数不是本规范的一部分。


最后,我想看看我是否可以通过 GoPy 以某种方式调试嵌入到 Python 包中的 Go 代码。

我认为实现这些东西并不是微不足道的,它们通常是在每个技术的基础上完成的。您可以只运行两个调试器会话并附加到内部程序。或者,如果您有兴趣尝试为您的用例编写自定义扩展,您可以查看专用扩展正在做什么。前任。

benjamin-simmonds.pythoncpp-debug
.

© www.soinside.com 2019 - 2024. All rights reserved.