debug_agent.lua
746 Bytes
local skynet = require "skynet"
local debugchannel = require "skynet.debugchannel"
local CMD = {}
local channel
function CMD.start(address, fd)
assert(channel == nil, "start more than once")
skynet.error(string.format("Attach to :%08x", address))
local handle
channel, handle = debugchannel.create()
local ok, err = pcall(skynet.call, address, "debug", "REMOTEDEBUG", fd, handle)
if not ok then
skynet.ret(skynet.pack(false, "Debugger attach failed"))
else
-- todo hook
skynet.ret(skynet.pack(true))
end
skynet.exit()
end
function CMD.cmd(cmdline)
channel:write(cmdline)
end
function CMD.ping()
skynet.ret()
end
skynet.start(function()
skynet.dispatch("lua", function(_,_,cmd,...)
local f = CMD[cmd]
f(...)
end)
end)