VSCode中Dart不支持全局评估且调试控制台无法打印输入的问题
解决VSCode中Dart开发的两个调试问题
咱先来说第一个提示「Global evaluation not supported on dart」的问题:
- 原因:VSCode的Dart调试器依赖Dart VM的调试协议,这个协议本身不支持在全局作用域下直接求值表达式。简单说就是,当你没暂停在某个函数栈帧里,或者输入的代码不在当前调试上下文的作用域内时,就会弹出这个提示。
- 解决办法:
- 调试时先在代码里打个断点,运行到断点处暂停后,再在调试控制台输入需要求值的变量或代码,这时是在当前栈帧的作用域内,就能正常工作了。
- 要是想测试一些独立的代码片段,可以通过VSCode命令面板(Ctrl+Shift+P)打开
Dart: New DevTools Tab,DevTools里的控制台支持更多场景的代码求值,包括全局作用域的内容。
再说说第二个调试控制台无法打印输入的问题:
- 原因:VSCode自带的调试控制台本质是调试表达式的交互面板,不是完整的交互式终端,它不支持输入内容的回显,甚至可能无法正确接收输入。而你用
dart命令在终端运行时,终端本身就是交互式环境,所以输入输出都正常。 - 解决办法:
- 修改调试配置,让调试时使用外部终端或集成终端:
- 在项目的
.vscode文件夹下找到launch.json(没有的话就通过调试面板的「创建launch.json文件」生成)。 - 在对应的Dart配置项里添加
"console": "externalTerminal"或者"console": "integratedTerminal",示例配置如下:
保存后重新调试,输入输出就会在指定的终端里正常显示了。{ "version": "0.2.0", "configurations": [ { "name": "Dart", "type": "dart", "request": "launch", "program": "bin/main.dart", // 替换成你的入口文件路径 "console": "externalTerminal" } ] } - 在项目的
- 另外建议检查VSCode的Dart插件是否是最新版本,旧版本可能存在这类IO交互的兼容性问题,更新插件后说不定能解决一些潜在问题。
- 修改调试配置,让调试时使用外部终端或集成终端:
内容的提问来源于stack exchange,提问作者Allen Johnson
相关产品推荐
相关产品推荐

