You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
help
call call address ...
clearcache clear lua code cache
cmem Show C memory info
debug debug address : debug a lua service
dumpheap dumpheap : dump heap profilling
exit exit address : kill a lua service
gc gc : force every lua service do garbage collect
help This help message
info info address : get service infomation
inject inject address luascript.lua
jmem Show jemalloc mem stats
kill kill address : kill service
killtask killtask address threadname : threadname listed by task
list List all the service
log launch a new lua service with log
logoff logoff address
logon logon address
mem mem : show memory status
netstat netstat : show netstat
ping ping address
profactive profactive [on|off] : active/deactive jemalloc heap profilling
service List unique service
signal signal address sig
snax lanuch a new snax service
start lanuch a new lua service
stat Dump all stats
task task address : show service task detail
trace trace address [proto] [on|off]
uniqtask task address : show service unique task detail
预读
2CZ2UA5u
环境测试搭建
使用示例代码见
examples/main.lua
。先开启进程:
从
examples/main.lua
中可以看到debug_console
开启的端口是8000
:现在我们使用
nc
或者telnet
命令连接这个端口就能进入调试控制台。这里推荐使用
rlwarp
命令包裹一下nc
命令,这样可以实现输入命令时使用ctrl + r
搜索历史输入的命令,使用ctrl + p
和ctrl + n
可以上下查看历史命令。当看到显示了
Welcome to skynet console
时,说明已经成功连上控制台了。查看服务列表
输入
list
命令,可以看到正在运行中的服务列表。如上所示,
:01000004
第一列冒号开头的是服务的地址,snlua cmaster
是服务启动参数。比如根据:0100000c snlua debug_console 8000
可以查到debug_console
服务的地址为:0100000c
。查看帮助
help
命令很有用的,有时候忘记命令的格式了,输入help
可以临时看看。call 命令的使用
call
命令是对skynet.call
接口的封装,执行效果和skynet.call
效果一样,一般用于手动执行服务里的某个函数,且该函数是command
里的接口。比如
simpledb
服务,代码位置:examples/simpledb.lua
,定义了GET
和SET
接口:接下来我们在 debug console 里执行
call
指令查看效果:首先是执行的
set
接口,命令格式为call 服务地址 "接口名", 参数1, 参数2
。其中服务地址就是list
命令显示出来的地址,接口名需要带引号,参数如果是字符串的时候,也需要有引号。然后执行的是
get
接口,返回的数据会输出到终端。可能已经发现了为什么定义的接口名是大写的,我们使用的时候却可以小写?这是因为
simpledb
对接口名做了处理,忽略大小写了。一般服务都没有处理这个的,所以需要注意保持相同的接口名。debug 命令
debug
命令就不多解释了,这篇 《在线调试 Lua 代码》 写很详细了,也给出了演示示例。inject 命令
前面看到
call
命令可以执行已经有实现好的外部接口,可是如何执行不是外部接口的函数呢?这就可以用inject
来执行没有提供外部接口的函数了。新建文件
testinject.lua
,写入下面代码:然后在 debug console 里执行
inject :0100000d ./testinject.lua
,如下:这时,
skynet
进程那边会输出下面的日志:这里只是测试了
skynet.error
接口,想执行任意接口都行的。local
函数不是很方便执行的,需要根据upvalue
去找,比较麻烦。所以一般只用来执行一些模块的接口。参考文章
The text was updated successfully, but these errors were encountered: