在 VSCode 调试时,有多种方法可以查看和打印变量的内容:
1. 鼠标悬停查看(最直接)
将鼠标悬停在变量名上,会弹出变量的当前值。
2. 使用"监视"窗口(推荐)
添加要监视的变量:
- 在左侧 运行和调试 面板 → 监视 区域
- 点击
+号,输入变量名,如my_variable - 可以输入表达式,如
len(data)、arr[0]等
3. 使用"调试控制台"实时计算
在断点暂停时,使用底部的 调试控制台 (Debug Console):
python
# 直接输入变量名查看
my_variable
# 打印表达式
len(my_list)
# 调用方法
my_dict.keys()
# 计算复杂表达式
[f"Item {i}: {x}" for i, x in enumerate(my_list)]
4. 使用"变量"窗口
左侧面板的 变量 (VARIABLES) 区域会显示:
- 局部变量 (Local):当前作用域的所有变量
- 全局变量 (Global)
- 可以展开列表、字典、对象查看内部结构
5. 在代码中临时打印
在调试时临时添加打印语句:
python
# 在断点附近添加临时打印
print(f"变量值: {my_variable}") # 会输出到调试控制台
import pdb; pdb.set_trace() # 或使用 pdb
6. 条件断点 + 日志点(Logpoint)
不停止程序,只打印变量:
方法 A - 日志点 (Logpoint):
- 右键点击断点 → 编辑断点
- 选择 Log message
- 输入:
变量 my_variable = {my_variable} - 程序运行时会自动打印到调试控制台,不暂停
方法 B - 条件断点:
- 右键断点 → 编辑断点
- 输入条件:
my_variable == "特定值"
7. 使用调试命令
在 调试控制台 中可以执行的命令:
python
# 打印变量
!print(my_variable)
# 查看变量类型
!type(my_variable)
# 列出所有变量
!dir()
# 查看局部变量
!locals()
# 执行多行代码
!for k, v in my_dict.items():
! print(f"{k}: {v}")
8. 进阶:使用 debugpy 的 breakpoint() 函数
在代码中设置断点:
python
def my_function():
x = 10
y = [1, 2, 3]
breakpoint() # 程序会在这里暂停
# 在调试控制台可以直接查看 x, y
result = x + sum(y)
return result
针对你的 Python 3.8 环境
由于你用的是 Python 3.8 且有 debugpy 兼容性问题,可能需要:
方案 A:使用 pdb 的打印功能
python
import pdb; pdb.set_trace()
# 在 pdb 调试器中:
# p my_variable # 打印变量
# pp my_dict # 漂亮打印
# l # 显示当前代码
# n # 下一步
# c # 继续执行
方案 B:在代码中记录变量
python
# 在断点前添加
debug_values = {
'var1': var1,
'var2': var2,
'timestamp': time.time()
}
print(f"Debug: {debug_values}")
实用快捷键
| 操作 | 快捷键 |
|---|---|
| 继续执行 | F5 |
| 单步跳过 | F10 |
| 单步进入 | F11 |
| 单步跳出 | Shift+F11 |
| 重启调试 | Ctrl+Shift+F5 |
| 停止调试 | Shift+F5 |
推荐工作流
- 简单查看:鼠标悬停或变量窗口
- 持续关注:添加到"监视"窗口
- 复杂表达式:在调试控制台输入
- 不暂停打印:使用 Logpoint
如果你在当前断点想查看之前的变量值(比如循环中的历史值),可以在调试控制台输入:
python
# 如果变量在循环中被覆盖,可以在循环内保存历史
history.append(current_value) # 预先添加这行代码