后端老鸟教你用调试器 别再只会用打印语句了
灵活_学者
2026-08-07 23:11
阅读 405
我入行五年,发现很多新人debug全靠print,这在项目复杂时效率极低。调试器能让你看到程序运行时的“骨骼”和“血液”,而不是只有最终输出的“皮肤”。
调试的本质:别瞎猜,要验证
新手常“猜”bug,调试工具的核心是把“猜”变成“验证”。看下面的Python代码:
def calculate_total(cart_items):
total = 0
for item in cart_items:
price = item['price']
quantity = item['quantity']
if quantity > 2:
price = price * 0.9
total = total + price * quantity
return total
cart = [
{'name': '《重构》', 'price': 99, 'quantity': 1},
{'name': '《代码整洁之道》', 'price': 78, 'quantity': 3},
{'name': '《Google ADK权威指南》', 'price': 120, 'quantity': 1}
]
print(calculate_total(cart))
结果429.6看似没错,但直接修改price可能污染数据。用print在循环里输出会看花眼,而用调试器,只需在total = total + price * quantity这行打个断点。
核心操作:掌握三招
以VS Code调试Python为例:点击行号左侧设断点,启动调试,程序会在断点处冻结。记住三个操作:
第一招:看变量状态 左侧“变量”面板显示当前所有变量值,可展开任意数据结构,验证预期是否一致。
第二招:控制执行
关键按钮:继续(F5)、单步跳过(F10)、单步进入(F11)、单步跳出(Shift+F11)。循环中最常用F10,按一下执行一行,立刻能看到total值变化。
第三招:监视与调用栈
可将price * quantity等表达式加入“监视”持续关注。“调用栈”面板显示嵌套调用路径,点击任一层可查看其变量状态。
实战:揪出隐蔽逻辑错误
假设需求改为:对所有书名带“《”的商品打9折。
def calculate_total_v2(cart_items):
total = 0
for item in cart_items:
price = item['price']
quantity = item['quantity']
if item['name'].startswith('《'):
price = price * 0.9
total = total + price * quantity
return total
在total = total + price * quantity处打断点,F10单步执行并观察变量。调试能让你“看到”price被直接修改的风险——若后续代码需用原始值就会出错。
避坑与进阶建议
常见坑:断点打在非执行行上;滥用单步进入(F11)进入系统函数;忘清断点。
进阶方向:
- 条件断点:循环万次时,右键设条件如
item['name'] == '《Google ADK权威指南》'。 - 日志断点:不暂停程序,直接输出变量值,完美替代
print,适合处理时序问题。 - 阅读经典:如《代码大全》,学习系统提出假设、设计实验去验证bug的策略。
从今天起,尝试用调试器代替print。开始会慢,但这是从“写代码的”成长为“工程师”的关键一步。
标签:Google ADK书籍
为你推荐
暂无相关推荐

评论 0