本文目录导读:

我来详细介绍一下代码调试的操作方法,从基础到进阶:
调试的基本准备
工具准备
- IDE调试器:VS Code、PyCharm、IntelliJ IDEA等内置调试器
- 浏览器调试工具:Chrome DevTools(前端调试)
核心调试操作步骤
设置断点
# 在代码行号处点击,出现红色圆点
def calculate():
x = 10 # [断点] 点击行号处
y = 20 # [断点]
result = x + y
print(result)
启动调试
- VS Code:按
F5或点击绿色三角形 - 浏览器:按
F12→ Sources → 点击行号
控制执行流程
| 操作 | 快捷键 (VS Code) | 作用 |
|---|---|---|
| 继续 | F5 |
运行到下一个断点 |
| 单步跳过 | F10 |
执行当前行,不进入函数 |
| 单步进入 | F11 |
进入函数内部 |
| 单步跳出 | Shift+F11 |
跳出当前函数 |
| 重启 | Ctrl+Shift+F5 |
重新开始调试 |
| 停止 | Shift+F5 |
结束调试 |
观察变量状态
查看变量值
# 调试时可以在调试面板查看: name = "张三" # 显示: name = "张三" age = 25 # 显示: age = 25 scores = [90, 85, 88] # 显示: scores = [90, 85, 88]
添加监视表达式
- 在监视窗口输入:
len(scores) - 查看表达式:
age > 18
实战示例
Python调试示例
def divide_numbers(a, b):
print(f"计算 {a} 除以 {b}")
result = a / b # 设断点,观察a、b的值
return result
def main():
numbers = [10, 20, 0, 30]
for i, num in enumerate(numbers):
try:
result = divide_numbers(100, num) # 断点在这里
print(f"结果: {result}")
except ZeroDivisionError:
print(f"错误:第{i+1}个数不能为0")
if __name__ == "__main__":
main()
JavaScript调试示例
// 在浏览器中调试
function fetchUserData(userId) {
console.log('开始获取用户数据'); // 断点
const url = `https://api.example.com/users/${userId}`; // 断点:查看url生成是否正确
fetch(url)
.then(response => {
console.log('收到响应:', response.status); // 断点:检查HTTP状态码
return response.json();
})
.then(data => {
console.log('用户数据:', data); // 断点:查看返回数据
displayUser(data);
})
.catch(error => {
console.error('错误:', error); // 断点:捕获异常
});
}
高级调试技巧
条件断点
# 只在特定条件触发时暂停
for i in range(100):
# 右键断点,设置条件:i == 50
print(f"当前值: {i}") # 只有i=50时才会暂停
日志断点(不暂停)
- 打印日志但不中断程序执行
- 适用于循环中的调试信息
常见调试场景
场景1:数组越界
def find_element(arr, target):
for i in range(len(arr) + 1): # 错误:范围过大
if arr[i] == target: # 断点:观察i的值
return i
return -1
场景2:空指针/null引用
class User:
def __init__(self, name):
self.name = name
def process_users(users_list):
for user in users_list:
print(user.name) # 断点:检查user是否为None
调试技巧总结
调试前
- 复现问题:确认bug能稳定复现
- 缩小范围:定位到出错的代码段
- 设置合适的断点
调试中
- 观察变量变化:重点跟踪关键变量
- 检查调用栈:了解函数调用路径
- 使用条件断点:节省调试时间
调试后
- 记录解决方案:避免重复踩坑
- 编写测试用例:确保修正确实有效
- 代码审查:检查是否引入新问题
调试快捷键汇总
| 平台 | 继续执行 | 单步跳过 | 单步进入 | 单步跳出 |
|---|---|---|---|---|
| VS Code | F5 | F10 | F11 | Shift+F11 |
| PyCharm | F9 | F8 | F7 | Shift+F8 |
| Chrome | F8 | F10 | F11 | Shift+F11 |
| IntelliJ | F9 | F8 | F7 | Shift+F8 |
学习建议
- 从小项目开始:先在简单代码上练习
- 多用断点:不要只用print调试
- 学会读堆栈:错误堆栈信息很有价值
- 善用分支调试:针对特定代码路径
调试不是找错,而是理解代码如何运行,熟练使用调试器能让你更快定位问题,更深入理解代码逻辑。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。