From b4b10e1c47903a967a4a55446c5f12ffea09ed75 Mon Sep 17 00:00:00 2001 From: Winston-Tao Date: Tue, 19 Aug 2025 10:09:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?TcpSharedListen=E5=A4=9A=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复tcpSharedListen 只有第一个调用的线程会执行TcpListen,后续线程直接返回。单进程多线程的环境下,只有第一个线程能正常断点。 --- emmy_debugger/src/emmy_facade.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/emmy_debugger/src/emmy_facade.cpp b/emmy_debugger/src/emmy_facade.cpp index ff331d4..ca12649 100644 --- a/emmy_debugger/src/emmy_facade.cpp +++ b/emmy_debugger/src/emmy_facade.cpp @@ -114,6 +114,10 @@ bool EmmyFacade::TcpSharedListen(lua_State *L, const std::string &host, int port if (transporter == nullptr) { return TcpListen(L, host, port, err); } + if (_emmyDebuggerManager.GetDebugger(L) == nullptr) { + _emmyDebuggerManager.AddDebugger(L); + SetReadyHook(L); + } return true; } From 8bf62f075e192986653a825e6b1a88f9b5aaa44a Mon Sep 17 00:00:00 2001 From: Winston-Tao Date: Tue, 19 Aug 2025 10:48:42 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=A7JSON=E8=A2=AB?= =?UTF-8?q?=E5=88=86=E5=8C=85=E6=97=B6=E8=A7=A3=E6=9E=90=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 查找换行符时,使用了数组 data[i],而不是 buf[i]。当大JSON被分包时(一次断数十个断点必现),data 只包含当前包的数据,导致json解析失败。 libc++abi: terminating due to uncaught exception of type nlohmann::detail::parse_error: [json.exception.parse_error.101] parse error at line 1, column 4566: syntax error while parsing object key - invalid string: missing closing quote; last read: '"f'; expected string literal --- emmy_debugger/src/transporter/transporter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emmy_debugger/src/transporter/transporter.cpp b/emmy_debugger/src/transporter/transporter.cpp index 4304c8c..e8a0200 100644 --- a/emmy_debugger/src/transporter/transporter.cpp +++ b/emmy_debugger/src/transporter/transporter.cpp @@ -86,7 +86,7 @@ void Transporter::Receive(const char* data, size_t len) size_t start = pos; for (size_t i = pos; i < receiveSize; i++) { - if (data[i] == '\n') + if (buf[i] == '\n') { pos = i + 1; break;