gpt4 book ai didi

node.js - 如何从 Node.js 应用程序与基于函数的 V8 调试 API 进行对话?

转载 作者:太空宇宙 更新时间:2023-11-03 22:44:26 24 4
gpt4 key购买 nike

我有一个相当特殊的调试问题,因为我的 Node 应用程序本身就是一个 Node 调试器(应用程序的一个部分将提供用于调试另一部分的调试接口(interface))。

我熟悉记录在以下位置的 V8 调试协议(protocol):

https://code.google.com/p/v8/wiki/DebuggerProtocol

以及使用它的多种工具(包括 Node 中的内部调试器、 Node 检查器等)。如果我必须通过网络连接与该 API 进行通信(就像所有现有工具似乎所做的那样),我可以这样做,但出于某些原因我不愿意这样做。我已经在进程中了,希望避免在所有情况下打开调试端口和网络开销(这是我的生产环境的一部分),并且我希望从调试 API 中获取 Javascript 对象,而不是您通过 JSON API 获得的 JSON 化版本(缺乏一些保真度)。

V8 调试器文档说:“有两个 API 用于此操作:使用 JavaScript 对象的基于函数的 API 和使用基于 JSON 的协议(protocol)的基于消息的 API。基于函数的 API 可以由进程内使用调试器代理,而基于消息的 API 也可以在进程外使用。”

使用 JavaScript 对象的基于函数的 API 听起来正是我所需要的,但我在 V8 文档中看不到任何有关此 API 或如何使用它的内容。我也看不到如何从 Node.js 访问此 API(或一般的 V8)。那么这可能吗?如果可能的话,如何实现?

最佳答案

它永远不会失败。研究一整天。发布到 SO。 10 分钟后找到答案。

使用以下参数启动 Node.js:--expose-debug-as=v8debug

毫不奇怪,这将 V8 调试状态公开为您可以引用的模块:

var debug = v8debug.Debug;
var scripts = debug.scripts();

仍在整理一堆 JS 入口点以及它们如何与已发布的 API 保持一致,但我认为我遇到的主要问题或多或少已经解决了。

关于node.js - 如何从 Node.js 应用程序与基于函数的 V8 调试 API 进行对话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22401679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com