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
-
只是一个构想,最近没时间做,记录一下。如果有同学愿意试试,非常支持:
动机
现在 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