通过.NET(clearScript)与Chrome V8调试器协议进行交互



我正在维护一个企业C#应用程序,该应用程序通过用户定义的JavaScript函数提供最终用户的可扩展性(带有选择的几个C#类型/代理((想想财务算法(。p>我们使用clearscript评估了这些功能(我们正在使用另一个名为Noesis的库,但是我们已经离开了(。

我想为 END-USERS 提供一种方法(通过Web界面(执行非常基本的调试。至少 - 检查变量并逐步进入函数。

在本地运行应用程序时,我已经成功地连接到了clearscript引擎,并且能够逐步浏览脚本 - 但是,我认为对于最终用户而言,在生产中运行的各种都不是有意义的原因:

  • 对于他们来说可能太棘手了
  • 端口分配可能的困难
  • 可能的防火墙问题

我真正想要的是V8调试器的SignalR接口 - Web -App将与SignalR交互,SignalR将与V8调试器进行交互。

  • 以前有人做过这些事情吗?
  • 我应该查看任何相关的.NET库吗?
  • 我的想法是,这似乎是一件相当大的工作吗?
  • 还有其他建议吗?

这是一个基于Web插座的协议 - 尽管您必须通过HTTP提出请求才能首先检索Tabid(请求/json/list(

https://chromedevtools.github.io/devtools-protocol/1-2/debugger描述了该协议 - 针对不同版本的Chrome的修订有不同的修订版,但1.2(稳定(似乎可以使用clearscript I的版本,

以及Websocket上的请求响应(命令(类型交互,V8还将发布事件 - 例如Debugger.scriptParsed&同一插座上的Debugger.paused

一些关键命令: Runtime.enable Debugger.enable Runtime.runIfWaitingForDebugger Debugger.getScriptSource Debugger.resume Debugger.evaluateOnCallFrame Runtime.getProperties

我已经写了一个小型演示项目https://github.com/flakey-bit/clearscriptdebugging/显示了另一个过程正在调试的目标过程。

如果您提到了Chrome和nodejs,则可能知道Nodejs,Chrome和Edge支持Websocket自然。所有安全选项都更好。对于nodejs,您可以找到诸如socket.io之类的标准库 对于服务器端dotnet websocketWebSocket协议今天是Linga Franka。

最新更新