3

前段时间我询问了在 PostgreSQL 函数和触发器中使用 PLV8 的缺点。与此同时,我使用 plpgSQL 的混合 szenario 并喜欢它。但是 - 如前所述 - PLV8 的调试选项较少。到目前为止,我了解 plugin_debugger 仅适用于 plpgSQL。外面有没有人找到一种很好的方法来以另一种方式进行 PLV8 调试,然后使用大量烦人的东西plv8.elog(NOTICE, 'this happens with my variable')?也许任何第三方工具或秘密插件?

4

1 回答 1

3

pl/v8 不再支持远程调试。

它在 pl/v8 中可用,直到 1.4.x 版本(参见#131)。旧版本中值得注意的缺失功能包括 ES6。

解决方法

如果您需要使用 pl/v8 1.4.x 调试 ES6/7 代码,您可以使用 Traceur 对其进行转译。


从1.4.x的文档中:

PL/v8 支持 v8 远程调试器。您需要在编译时启用它才能传递ENABLE_DEBUGGER_SUPPORT给 make。make static 会自动打开它。如果启用,并且一旦 PL/v8 模块被加载(并且执行引擎被初始化,PL/v8 接受远程调试器连接。如果您有来自 v8 包的 d8,请运行--remote-debug --debug-port=35432以附加功能。如果您想更改远程调试器端口,有一个GUCplv8.debugger_port来设置端口号。你也可以尝试函数内部的调试器语句来设置断点。有关v8远程调试器的更多详细信息,请参阅v8文档。

如果您不熟悉调试 JavaScript(或 v8),那可能有点难以处理。

如果您对调试协议的低级特性感兴趣,请查看

单步执行代码可能是一些腿部工作,但这里是如何完成的一个起点。

如果您正在寻找完整的现成解决方案或分步教程,我不确定是否有特定于 PL/v8 的解决方案。

我没有亲自尝试过任何这些来调试 PL/v8,但是,有可能有人可以连接并且或多或少地按预期工作:https ://developer.chrome.com/devtools/docs/debugging-clients

于 2016-07-11T19:28:05.117 回答