DebugConsole

skynet自带了一个调式控制台服务,你需要在你的启动脚本里启动它.

skynet.newservice("debug_console",8000)

这里的示例是监听8000端口,你可以修改成别的端口.

出于安全考虑,调试控制台只能监听本地地址127.0.0.1,所以如果需要远程使用,需要先登录到本机,然后再连接

可以用telnet 或nc登录调试控制台.启动后会显示

Welcome to skynet console
表示连接成功.


注:由于skynet使用自己的IO库,所以很难把libreadline接入(不能再readline的hook中yield).如果你希望在控制台使用readline的history等特性,可以自己使用rlwrap.


这时,你可以输入调试指令,输入help可以列出目前支持的所有指令,这份文档可能落后于实际版本,所以应以help列出的指令为准.


命令的一般格式是命令地址,有些命令不带地址,会针对多有的服务.当输入地址时,可以使用:01000001这样的格式指代一个服务地址:由冒号开头的8位16进制数字,也可以省略前面两个数字的harbor id以及接下来的联系0,比如:01000001可以简写为1,所有活动的服务可以输入list列出


常用的针对所有lua服务的指令有:

list列出所有服务,以及启动服务的命令的参数.

gc强制让所有lua服务汇报自己占用的内存.(注:它只能获取lua服务的lua vm内存占用情况,如果需要C模块中的内存使用报告,请参考MemoryHook)

start列出所有lua服务的消息队列长度,以及被挂起的请求数量

service列出所有的唯一lua服务


注意,由于这些指令是挨个向每个服务发送消息并等待回应,所以当某个Lua服务过载时,可能需要等待很长时间才有返回.


针对单个lua服务的指令有:

exit address让一个lua服务退出.

kill address强制中止一个lua服务.

info address 让一个lua服务汇报自己的内部信息,参见Profile.

signal address sig 向服务发送一个信号,sig默认为0,当一个服务陷入死循环时,默认信号会打断正在执行的lua字节码,并抛出error显示调用栈.这是针对endless loop的log的有效调试方法.注:这里的信号并非系统信号.

task address 显示一个服务中所有被挂起的请求的调用栈.

debug address,针对一个lua服务启动内置的单步调试器.http://blog.codingnow.com/2015/02/skynet_debugger.html

logon/logoff address 记录一个服务所有的输入消息到文件,需要在Config里配置logpath.

inject address script 将script 名字对应的脚本插入到制定服务中运行(通常可用于热更新补丁)

<think>嗯,用户问的是关于VSCode中的调试控制台(Debug Console)。之前他刚问了如何调试Python包,现在可能在使用过程中遇到了调试控制台的问题,或者想更深入了解其功能。我需要先回顾之前给出的步骤,确保这次回答的一致性。 首先,用户可能想知道调试控制台的基本用法,比如如何与程序交互,查看变量等。他们可能在调试时遇到了断点暂停的情况,需要检查变量或执行一些代码。根据之前的回答,我提到了调试控制台可以在暂停时执行代码,这里需要详细说明。 接着,用户可能遇到了一些常见问题,比如为什么调试控制台没有输出,或者无法输入命令。需要检查是否在正确的时机使用控制台,比如是否在断点处暂停。另外,配置问题也可能导致控制台行为异常,比如使用了外部终端而不是集成控制台。 还要考虑用户的使用场景。他们可能在开发WebUI项目,这类项目可能有服务运行,需要查看实时日志或与API交互。调试控制台的实时交互功能对他们可能特别有用,比如在服务运行时调用特定函数测试接口。 用户可能没有明确说出的是,他们可能在调试过程中发现某些变量值不符合预期,或者想动态修改某些值继续运行,这时候调试控制台的动态执行功能就显得重要了。需要强调如何在控制台中修改变量或调用函数,以及这些操作对程序的影响。 另外,高级功能如远程调试时使用debugpy的监听,可能也是用户未来会遇到的需求。虽然当前问题关于调试控制台,但可以简要提及相关扩展,帮助用户更全面地利用VSCode的调试工具。 总结,回答结构应包括基本概念、核心功能、使用场景、常见问题及技巧,并保持与之前回答的一致,比如提到的配置参数和扩展推荐。需要确保语言口语化,分点清晰,帮助用户逐步理解和应用调试控制台的各种功能。</think>在VSCode中,**调试控制台(Debug Console)** 是调试过程中最核心的交互工具。以下分5个维度详解其功能与使用技巧: --- ### 一、核心功能解析 1. **实时输出监控** - 自动显示程序的标准输出(`print`)和标准错误(`stderr`) - 示例:当Web服务启动时会持续输出日志 ```python print("[DEBUG] Server started on port 8080") # 控制台实时显示 ``` 2. **交互式代码执行** - 在断点暂停时(❗重要前提),可执行任意Python代码 - 示例调试时修改运行参数: ```python >>> current_port = 9090 # 直接修改当前作用域的变量 >>> reload_config() # 调用正在调试的函数 ``` 3. **变量可视化** - 自动显示调用堆栈中的变量值 - 支持展开复杂对象(如Django的request对象): ```python ▶ request.POST = { 'username': 'test', 'password': '*****' } ▶ headers = { 'Content-Type': 'application/json', ... } ``` --- ### 二、典型使用场景 1. **动态修复数据** ```python # 发现user_id为空时 >>> context['user_id'] = 10086 # 手动注入测试数据后继续执行 ``` 2. **快速验证函数** ```python # 在Django视图断点处测试: >>> from .utils import validate_token >>> validate_token("eyJhbGciOiJIUzI1NiIs...") ▶ <返回值可视化展示> ``` 3. **异步调试** ```python # 在FastAPI中间件调试时: >>> import asyncio >>> await fetch_remote_data() # 直接执行async函数 ``` --- ### 三、进阶操作技巧 1. **魔法命令** ```python >>> !ls -la # 执行shell命令(注意感叹号前缀) >>> %debug # 进入PDB调试器(需安装ipykernel) ``` 2. **历史记录导航** - 使用`↑`/`↓`键快速调取历史命令 - `Ctrl+R` 反向搜索历史命令 3. **多行代码输入** ```python >>> def temp_func(): ... print("临时函数") ... return True >>> temp_func() # 可定义复杂逻辑 ``` --- ### 四、常见问题诊断 1. **控制台无响应** - ✅ 检查是否处于断点暂停状态 - ✅ 确认`launch.json`中未设置`"console": "externalTerminal"` 2. **对象无法展开** ```python >>> dir(obj) # 查看对象属性 >>> vars(obj) # 显示__dict__内容 >>> import pprint; pprint.pprint(obj.__dict__) ``` 3. **中文乱码处理** ```json // 在launch.json中添加: "env": { "PYTHONIOENCODING": "utf8" } ``` --- ### 五、配置优化建议 ```json // 推荐调试配置: { "console": "internalConsole", "internalConsoleOptions": "neverOpen", "redirectOutput": true, "justMyCode": false // 显示第三方库的调用栈 } ``` 配合使用 **Watch窗口** 监控关键变量: 1. 点击调试工具栏的`+` 2. 输入表达式(如:`request.headers.get('X-Real-IP')`) ![调试控制台布局示意图](https://example.com/debug-console-layout.png) (注:示意图需自行补充) 建议搭配使用 **Jupyter扩展** 实现更复杂的数据可视化调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值