skynetda icon indicating copy to clipboard operation
skynetda copied to clipboard

无法使用debug

Open samuelyao314 opened this issue 4 years ago • 6 comments

我的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

samuelyao314 avatar Mar 04 '20 13:03 samuelyao314

修改一下config.sudoku,在执行时当前目录是${workspaceFolder}/skynet,所以你的配置中的路径要相对于以这个路径,比如:

lualoader = "./lualib/loader.lua" lua_cpath = "../luaclib/?.so;./luaclib/?.so"

其他的自行修改,然后再看看?

你的系统是什么?Macos么?

colinsusie avatar Mar 06 '20 03:03 colinsusie

你还忘了加一句:

logservice = "snlua"

colinsusie avatar Mar 06 '20 03:03 colinsusie

能否不移动当前目录到 , ${workspaceFolder}/skynet。 因为当前目录一改变后,很容易影响到代码逻辑的。

samuelyao314 avatar Mar 06 '20 09:03 samuelyao314

如果你在VSCode启动skynet的话,skynet的当前目录默认是否为${workspaceFolder}?这个要先确定一下。如果不是的话,其实当前目录改为什么也没有关系了。 因为已经有人在用了,所以工作目录再修改,可能别人又不同意,我是建议你代码中的路径全部依赖于config文件,这样只需要修改config文件就可以了。

colinsusie avatar Mar 09 '20 03:03 colinsusie

@colinsusie 是否可以增加个配置选项 让用户自己定义工作目录 默认还是保持原来的

cloudfreexiao avatar Mar 27 '21 17:03 cloudfreexiao

我更新了代码,支持设置工作目录,具体看这里的README说明 skynet debugger 也上传最新版本了,应该可以升级上去使用。

colinsusie avatar Apr 30 '21 13:04 colinsusie