Replies: 1 comment
-
|
是否考虑接入 tracy 作为 profiler 工具? |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
只是一个构想,最近没时间做,记录一下。如果有同学愿意试试,非常支持:
动机
现在 Ant 引擎对 vscode 支持的很好,调试 Lua 代码问题不大。但我觉得使用 chrome 的 devtools 的使用门槛更低一些。另外,现在对 vscode 调试器的支持可以调试引擎的绝大部分 Lua 代码,包括启动流程。为此,做了一些特殊处理。但日常开发,只需要调试游戏部分,可以做一个更纯粹的远程调试器。
CDP 还可以提供一个更友好的界面监视引擎内部状态:比如 ecs 的 component 数据、引擎的各部分性能分析、内存占用情况等等。这比现在用 debug text 输出在游戏屏幕上舒服得多。
实现
可以参考 https://github.com/geoffreylitt/ladybug 这个项目把 chrome 作为 ruby 的调试器使用。其实现非常简单,核心代码在 https://github.com/geoffreylitt/ladybug/blob/master/lib/ladybug/middleware.rb
原理是:被调试的程序自己实现一个 websocket server 监听端口。在 chrome 的 devtool 界面输入一个 url ,chrome 就主动发起 websocket 连接连上来。然后就会发送一些 json 请求。差不多就是问程序要显示什么源文件,要设置什么断点等等。回复这些请求就 ok 了。
Ant 引擎目前已经实现了 web server ,且可以通过 vfs 显示 lua 源代码。所以,可以把这些信息发送给 CDP 。
目前缺 websocket 的实现,但 skynet 中已经实现过一次。ltask 和 skynet 非常类似,所以可以直接拿过来用: https://github.com/cloudwu/skynet/blob/master/lualib/http/websocket.lua 。
需要完成的工作主要是和 CDP 对接,而 Lua 的 remote debug 部分目前已经完成。只需要把和 vscode 对接的地方改成和 CDP 对接。
需要帮助
目前我没有时间做,希望有感兴趣的同学试试。实现过程中有什么问题,当尽力回答。
Beta Was this translation helpful? Give feedback.
All reactions