【问题标题】:Debugging PLV8 in PostgreSQL在 PostgreSQL 中调试 PLV8
【发布时间】:2016-08-05 07:19:25
【问题描述】:
前段时间,我在 PostgreSQL 函数和触发器中请求disadvantages of using PLV8。与此同时,我使用 plpgSQL 的混合 szenario 并喜欢它。但是 - 如前所述 - PLV8 的调试选项较少。到目前为止,我了解 plugin_debugger 仅适用于 plpgSQL。外面有没有人找到一种很好的方法来以另一种方式进行 PLV8 调试,然后使用大量烦人的plv8.elog(NOTICE, 'this happens with my variable')?也许任何第三方工具或秘密插件?
【问题讨论】:
标签:
postgresql
debugging
plugins
plpgsql
plv8
【解决方案1】:
pl/v8 不再支持远程调试。
它在 pl/v8 中可用,直到版本 1.4.x(请参阅#131)。旧版本中值得注意的缺失功能包括 ES6。
解决方法
如果您需要使用 pl/v8 1.4.x 调试 ES6/7 代码,您可以使用 Traceur 对其进行转译。
来自 1.4.x 的 documentation:
PL/v8 支持 v8 远程调试器。您需要在编译时启用它以通过ENABLE_DEBUGGER_SUPPORT 进行制作。 make static 会自动打开它。如果启用,并且一旦 PL/v8 模块被加载(并且执行引擎被初始化,PL/v8 接受远程调试器连接。如果您有来自 v8 包的 d8,请使用--remote-debug --debug-port=35432 运行以附加功能。如果您想更改远程调试器端口,有一个GUC plv8.debugger_port 设置端口号。您也可以尝试在函数中使用调试器语句设置断点。有关v8远程调试器的更多详细信息,请参阅v8文档。
如果您不熟悉调试 JavaScript(或 v8),可能会有点麻烦。
如果您对调试协议的低级功能感兴趣,check this out。
单步执行代码可能是一些繁琐的工作,但here is a starting point 了解如何完成。
如果您正在寻找完整的现成解决方案或分步教程,我不确定是否有特定于 PL/v8 的解决方案。
我没有亲自尝试过任何这些来调试 PL/v8,但是,有可能有人可以连接并且或多或少按预期工作:https://developer.chrome.com/devtools/docs/debugging-clients