LuaPanda icon indicating copy to clipboard operation
LuaPanda copied to clipboard

升级到3.2之后,Unity调试首次连接可以正常调试,关闭后就无法正常断点

Open yuzexun opened this issue 4 years ago • 2 comments

Describe the bug 使用3.1版本的时候,启动调试后,再启动Unity的项目,可以正常调试,关闭运行后,再运行项目,都可以正常进入断点。 更新到3.2版本后,只有首次调试可以正常断点,关闭再重新运行项目后,无法再进入断点。 每次得重启启动调试才可以。

Desktop (please complete the following information):

  • OS: [e.g. Windows macOS]
  • Visual Studio Version [e.g. 1.52.1 (1.52.1)]
  • LuaPanda Version [e.g. 3.2.0]
  • Framework [e.g. Xlua]

Additional context 在使用3.2的时候,我首先是更新了LuaPanda.lua,同步了最新的版本,出现了上面的问题。 之后我重新安装,但不更新LuaPanda.lua,也同样出现了上面的问题。

yuzexun avatar Feb 03 '21 06:02 yuzexun

找了一下连接的相关代码,发现是调试器服务端收到一个连接后就close了,不知道作者这么做是不是有其他原因,个人临时的解决办法是这样的:(先用着,等后续官方修复) 进入目录“C:\Users\用户名.vscode\extensions\stuartwang.luapanda-3.2.0\out\debug”,打开luaDebug.js文件,把第291行注释掉,然后重启vscode。 `

290                this.connectionFlag = true;
291                // this._server.close();
292                let connectMessage = "[Connected] VSCode Server 已建立连接! Remote device info  " + socket.remoteAddress + ":" + socket.remotePort;
293               logManager_1.DebugLogger.AdapterInfo(connectMessage);

`

KevinCaiqimin avatar Mar 05 '21 06:03 KevinCaiqimin

分别解释下两个问题哈

  1. 每次启动unity后需要重Run调试器 目前机制是这样的:unity停止运行后会关闭lua虚拟机,调试器前端(vscode)发现断开连接后会停止运行。所以下次调试时需要用户手动在Vscode里Run一下才能够重新连接。 有的调试器在连接断开后不会停止运行,会继续等待下一次连接。这样用户不用反复Run调试器,体验也会好一些。不过最近太忙了,以后有时间会做优化。 ps. 关于提到3.1版本在停止运行后再次启动可以直接开始调试,是否使用的是xlua框架。我之前在测试时发现xlua在Unity Editor中停止游戏运行之后,lua虚拟机还在继续运行,和调试器连接也没有断开,但这里没有做深究。

  2. 发现是调试器服务端收到一个连接后就close了 调试器前端(Vscode)和 后端(lua端)的连接应该是一对一的。之前我们遇到过在建立起调试连接之后,因为设置错误,另一个引擎的调试器后端也连接过来了,导致调试数据乱掉。 为了避免这种情况,在建立起一条链接之后,关闭server (已建立的连接会保持)。调试停止时才会重开server.listen。 image

所以这行代码是做异常处理用的,即使注释掉也不会影响功能。以后做自动重连的时候我再梳理这个逻辑吧

stuartwang avatar Mar 10 '21 16:03 stuartwang