```lua require "debugger":start "127.0.0.1:12306":event "wait" print "ok" function test() local count = 0 for i=1, 1000 do count = count + 1 end end function example() require "debugger":attach {} print("coroutine started") for i=1,5 do test() print("do "..i) coroutine.yield() end print("coroutine finished") end local co = coroutine.create(example) coroutine.resume(co) coroutine.resume(co) coroutine.resume(co) coroutine.resume(co) coroutine.resume(co) coroutine.resume(co) print "down!" ``` 调 require "debugger":attach {} 时,会执行到 ```c static void clear_client(lua_State* hL) { luadbg_State* L = get_client(hL); lua_pushnil(hL); lua_rawsetp(hL, LUA_REGISTRYINDEX, &DEBUG_CLIENT); if (L) { luadbg_close(L); // 这里就停掉了。 } } ``` 这里 get_client 能拿到一个 L(luadbg_State*) 是主线程创建的,然后就被 luadbg_close 掉了
Activity
actboy168 commentedon Sep 6, 2024
attach 是为什么,同一个实例不需要 attach
huanzai commentedon Sep 6, 2024
[#128 ] 我看这里需要:在coroutine中调用require "debugger":attach{},通知调试器这个coroutine需要调试。
huanzai commentedon Sep 6, 2024
attach.zip
见这个例子,
所以想通过在协程中attach来激活协程的hook