我有一个相当特殊的调试问题,因为我的Node应用程序本身就是一个Node调试器(应用程序的一个部分将为调试另一个部分提供调试接口).
我熟悉以下文档中记录的V8调试协议:
https://code.google.com/p/v8/wiki/DebuggerProtocol
以及使用它的多种工具(包括Node中的内部调试器,节点检查器和许多其他工具).如果我必须通过网络连接与该API通信,就像所有现有工具似乎一样,我可以这样做,但我宁愿不出于几个原因.我已经在进程中,希望避免在所有情况下打开调试端口和网络开销(这是我的生产环境的一部分),并且我想从调试API中获取Javascript对象,而不是您通过JSON API获得的JSON-ified版本(缺少一些保真度).
V8调试器文档说:"有两个API:基于函数的API使用JavaScript对象和基于消息的API使用基于JSON的协议.基于函数的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();
Run Code Online (Sandbox Code Playgroud)
仍然整理出一堆JS入口点以及它们如何与已发布的API对齐,但我认为我的主要问题或多或少得到了解决.
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |