VSCode内联提示仅显示调试暂停时当前作用域的变量及简单属性值,不支持表达式求值;需满足调试会话中暂停、启用"debug.inlineValues"、对应语言扩展及sourceMap配置正确等前提。

内联提示(Inline Values)只显示变量,不支持任意表达式求值
VSCode 的内联提示功能默认只在调试暂停时,自动在代码行末尾显示**当前作用域内已声明的变量名及其值**,比如 count、user.name、items.length 这类直接可读的标识符或简单属性访问。它不是表达式求值器,不接受 count + 1、items.filter(x => x > 5) 或 typeof data 这类计算型表达式——输进去也不会显示结果。
为什么你在代码旁没看到内联值?先确认基础条件
内联提示是“开箱即用但有前提”的功能,常见失效原因不是设置错了,而是环境没到位:
- 必须处于**调试会话中**(顶部有橙色调试工具条),且已命中断点并暂停;单纯运行(Ctrl+F5)或未暂停时,内联值不会出现
- VSCode 设置里需开启:
"debug.inlineValues": true(默认为true,但可能被工作区覆盖) - Python 用户注意:旧版 Python 扩展(
ms-python.pythonv2023 以前)不支持内联值;必须使用新版官方扩展(ms-python.python≥ v2024.6)或启用debugpy作为调试器 - TypeScript/JavaScript 项目需确保
sourceMaps正确生成且launch.json中配置了"sourceMaps": true,否则内联值可能显示原始编译后变量名(如_a)或空白
想看表达式结果?别依赖内联提示,换这三个地方
内联提示的设计目标是“一眼看清变量”,不是“动态执行逻辑”。真要查表达式,得用更合适的工具:
-
Watch 面板:添加
items.filter(i => i.active)或response?.data?.length ?? 0,每次断点暂停时自动求值(注意:不支持await或语句) -
Debug Console:输入
JSON.stringify(state, null, 2)或myArray.find(x => x.id === targetId),支持副作用、跨作用域、甚至await fetch(...)(在 async 断点下) -
鼠标悬停:把光标停在
user上,展开看user.profile.avatarUrl—— 比写 Watch 表达式更快,适合临时探查嵌套结构
最常被忽略的一点:内联值不刷新引用内容
比如你监视 obj,然后代码中执行了 obj.count++,内联提示里 obj 右侧显示的仍是旧值,不会自动展开更新。它只在**每次断点暂停瞬间**抓取一次快照。要看到新值,必须重新走到断点、或手动触发单步(F10/F11)让调试器再次暂停——这点和 Watch 面板一样,但 Watch 至少有刷新图标(↻),内联提示连这个都没有。


















