VSCode调试器stdin/stdout不显示及DAP消息查看咨询
VSCode调试器开发:查看输入输出及DAP消息的方法
一、查看目标程序的stdout/stderr输出
- 必须正确实现DAP的
output事件:当目标程序产生stdout或stderr输出时,调试器需要主动向VSCode发送output类型的DAP事件,携带输出内容和对应的类别(stdout/stderr),VSCode才会在调试控制台展示这些内容。如果你的调试器没触发该事件,控制台自然无输出。 - 处理快速退出程序:对于执行后立即关闭的程序,要确保调试器在发送程序终止的DAP事件前,先把所有待发送的
output事件发送完毕,同时等待目标程序的输出缓冲区刷新,避免输出丢失。
二、查看DAP消息
- 全局开启DAP日志:在VSCode设置中搜索
debug.trace,将其值设为verbose,此时所有DAP的请求、响应、事件都会被记录到输出面板的「Debug Console」或「Log (Window)」频道中。 - 单会话开启DAP日志:在调试配置文件
launch.json中,给对应的调试配置添加"trace": true字段,仅为当前调试会话开启详细的DAP日志,日志内容会直接输出到调试控制台。
三、查看调试器自身的输入输出
如果需要查看调试器进程自身的stdout/stderr(而非目标程序的),可以通过VSCode的调试适配器API实现:
- 使用
vscode.debug.registerDebugAdapterDescriptorFactory注册自定义适配器工厂,在创建调试器进程时,捕获其标准输入输出流,然后通过VSCode的输出频道API(vscode.window.createOutputChannel)将调试器的日志内容输出到指定的输出面板频道中。
内容的提问来源于stack exchange,提问作者BJury
相关产品推荐
相关产品推荐

