如何能够从Node.js应用程序谈论基于function的V8debuggingAPI?

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

我熟悉V8debugging协议:

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

以及使用它的各种工具(包括Node,node-inspector等内部debugging器)。 如果我必须通过networking连接与API进行交stream,所有现有工具似乎都可以这样做,但我宁可不要因为几个原因。 我已经在进程中,想要避免在所有情况下打开debugging端口和networking开销(这是我的生产环境的一部分),我想从debuggingAPI获取Javascript对象,而不是通过JSON API获得的JSON-ified版本(缺less一些保真度)。

V8debugging器文档说: “这里有两个API:基于函数的使用JavaScript对象的API和使用基于JSON的协议的基于消息的API。基于函数的API可以被进程内debugging器代理使用,而消息基于API的API也可以在stream程外使用。“

使用JavaScript对象的基于函数的API听起来就像我所需要的,但是在V8文档中我没有看到关于这个API或者如何使用它的其他信息。 我也看不到如何从Node.js访问这个API(或一般的V8)。 那么这是可能的,如果是这样,怎么样?

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

用这个参数启动Node.js:– --expose-debug-as=v8debug

毫不意外的是,将V8debugging状态公开为可以参考的模块:

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

仍然整理了一堆的JS入口点,以及他们如何与发布的API,但我认为我的主要问题是或多或less的解决。