skynetda
skynetda copied to clipboard
无法使用debug
我的launch.json 是这样的:
"version": "1.0.0",
"configurations": [
{
"name": "skynet debugger",
"type": "lua",
"request": "launch",
"program": "${workspaceFolder}/skynet",
"config": "${workspaceFolder}/etc/config.sudoku"
}
]
文件 config.sudoku
thread = 1 logger = "vscdebuglog" harbor = 0 lualoader = "skynet/lualib/loader.lua" bootstrap = "snlua bootstrap" -- The service for bootstrap
start = "sudoku" -- main script
lua_cpath = "luaclib/?.so;skynet/luaclib/?.so" lua_path = "lualib/?.lua;lualib/3rd/?.lua;skynet/lualib/?.lua;"
snax = "service/?.lua;service/?/init.lua;skynet/service/?.lua" luaservice = "service/?.lua;service/?/init.lua;skynet/service/?.lua" cpath = "cservice/?.so;skynet/cservice/?.so"
vscdbg_open = "$vscdbg_open" vscdbg_bps = [=[$vscdbg_bps]=]
项目目录是这样的。
my_project/ skyent/ lualib/ service/ etc/
sudoku.lua 是
local skynet = require "skynet" local socket = require "skynet.socket"
-- 监听端口 local host = "127.0.0.1" local port = 9871
local function handler(id, addr) while true do local puzzle = socket.readline(id, "\r\n") if not puzzle then break end skynet.error("puzzle: ", puzzle) local result = puzzle skynet.error("result:", result) socket.write(id, result .. "\r\n") end socket.close(id) end
local function start_server() local listen_id = socket.listen(host, port) assert(listen_id) skynet.error("listen id: ", listen_id) socket.start(listen_id, function(id, addr) skynet.error("client id: ", id, ", addr: ", addr) socket.start(id) -- 这行很重要. 否则id 不可读. skynet.fork(handler, id, addr) end) end
skynet.start(function() skynet.error("-----------start sudoku server.----------------") start_server() end)
vscode 输出日志如下
skynet debugger start!
终端上没法访问服务 ✘ ✚ telnet 127.0.0.1 9981 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused telnet: Unable to connect to remote host
修改一下config.sudoku,在执行时当前目录是${workspaceFolder}/skynet,所以你的配置中的路径要相对于以这个路径,比如:
lualoader = "./lualib/loader.lua" lua_cpath = "../luaclib/?.so;./luaclib/?.so"
其他的自行修改,然后再看看?
你的系统是什么?Macos么?
你还忘了加一句:
logservice = "snlua"
能否不移动当前目录到 , ${workspaceFolder}/skynet。 因为当前目录一改变后,很容易影响到代码逻辑的。
如果你在VSCode启动skynet的话,skynet的当前目录默认是否为${workspaceFolder}?这个要先确定一下。如果不是的话,其实当前目录改为什么也没有关系了。 因为已经有人在用了,所以工作目录再修改,可能别人又不同意,我是建议你代码中的路径全部依赖于config文件,这样只需要修改config文件就可以了。
@colinsusie 是否可以增加个配置选项 让用户自己定义工作目录 默认还是保持原来的
我更新了代码,支持设置工作目录,具体看这里的README说明 skynet debugger 也上传最新版本了,应该可以升级上去使用。