目录
- 准备工作:安装 PyDev
- 调试的核心概念
- 断点
- 调试透镜
- 视图窗口
- 调试步骤:从零开始
- 第1步:设置断点
- 第2步:启动调试
- 第3步:使用调试控制按钮
- 第4步:查看和修改变量
- 第5步:步入、步过和步出
- 高级调试技巧
- 条件断点
- 日志点
- 异常断点
- 远程调试
- 常见问题与解决方法
准备工作:安装 PyDev
在开始调试之前,请确保你已经正确安装了 PyDev 插件。

- 打开 Eclipse。
- 进入
Help->Eclipse Marketplace...。 - 在搜索框中输入 "PyDev"。
- 找到 "PyDev" 插件,点击
Install。 - 按照提示完成安装,然后重启 Eclipse。
- 安装后,需要配置 Python 解释器:
- 进入
Window->Preferences->PyDev->Interpreter - Python。 - 点击
New,选择你系统中安装的 Python 解释器(python.exe)。 - 勾选你需要的标准库,点击
OK和Apply。
- 进入
调试的核心概念
在开始之前,先了解几个关键术语:
- 断点:你希望在程序执行到此处时暂停的代码行,这是调试的起点。
- 调试透镜:当程序暂停时,代码编辑器左侧会显示一个蓝色的“透镜”图标,高亮显示当前正在执行的代码行。
- 视图窗口:调试时,Eclipse 底部会自动切换到 "Debug" 透视图,其中包含几个关键窗口:
- Debug:显示当前所有线程和栈帧,这是控制程序执行的核心。
- Variables:显示当前作用域内所有变量的值,你可以在这里展开对象、查看属性和修改值。
- Expressions:你可以在这里输入任意 Python 表达式(如
my_list[0]或a + b),实时查看其结果。 - Console:显示程序的
print输出和错误信息。
调试步骤:从零开始
我们通过一个简单的例子来走一遍完整的调试流程。
示例代码 (debug_example.py):
def add(a, b):
"""一个简单的加法函数"""
print(f"正在计算 {a} + {b}")
result = a + b
return result
def multiply(x, y):
"""一个简单的乘法函数"""
print(f"正在计算 {x} * {y}")
return x * y
def main():
num1 = 10
num2 = 20
sum_result = add(num1, num2)
print(f"加法结果是: {sum_result}")
product_result = multiply(sum_result, 2)
print(f"最终结果是: {product_result}")
if __name__ == "__main__":
main()
第1步:设置断点
在代码编辑器中,找到你希望程序暂停的行,双击该行左侧的灰色空白区域。

- 你会看到一个 蓝色圆点 出现,这表示断点已成功设置。
- 在上面的例子中,我们可以在
main()函数的第一行num1 = 10和add()函数的result = a + b这两行设置断点。
第2步:启动调试
有多种方式可以启动调试器:
-
方法一(推荐):使用调试按钮
- 在代码编辑器的工具栏上,找到带有 虫子 图标的按钮 "Debug As"。
- 点击它,然后选择 "Python Run"。
-
使用右键菜单
- 在代码编辑器中右键点击。
- 选择 "Debug As" -> "Python Run"。
-
使用快捷键
(图片来源网络,侵删)- Windows/Linux:
F11 - macOS:
Cmd + F11
- Windows/Linux:
启动后,Eclipse 会询问你切换到 "Debug" 透视图,选择 "Switch",程序会开始运行,并在第一个断点处暂停。
第3步:使用调试控制按钮
当程序暂停时,你会看到底部的 "Debug" 视图被激活,并且工具栏上出现了一组新的调试按钮,理解这些按钮是调试的关键:
- Resume (F8):继续执行,程序会运行直到遇到下一个断点或程序结束。
- Suspend:暂停,暂停当前正在执行的线程。
- Terminate (Ctrl+F2):终止,完全停止调试会话,关闭程序。
- Step Over (F6):步过,执行当前行,如果当前行是一个函数调用,它会完整地执行这个函数,然后停在下一行。(最常用的按钮之一)
- Step Into (F5):步入,如果当前行是一个函数调用,它会进入这个函数内部,停在函数的第一行,如果不是函数调用,效果和 "Step Over" 一样。
- Step Return (F7):步出,执行完当前函数的剩余部分,并在函数返回后,停在调用该函数的下一行。
第4步:查看和修改变量
当程序在断点处暂停时:
-
查看变量:
- 切换到底部的 "Variables" 视图。
- 你会看到当前作用域(这里是
main函数)内的所有变量:num1,num2等。 - 你可以展开变量(如
sum_result如果它是一个列表或字典)来查看其内部结构。
-
修改变量:
- 在 "Variables" 视图中,找到你想修改的变量(
num1)。 - 右键点击它,选择 "Change Value..."。
- 输入新的值(
100),点击 "OK"。 - 你会发现代码中的
num1值已经被临时修改,这有助于测试不同输入的情况。
- 在 "Variables" 视图中,找到你想修改的变量(
-
使用表达式视图:
- 切换到 "Expressions" 视图。
- 在输入框中输入你想要计算的表达式,
num1 + num2。 - 按回车,你会在下方看到表达式的结果。
第5步:步入、步过和步出
让我们结合上面的例子来理解这几个按钮:
- 程序停在
num1 = 10。 - 按 F6 (Step Over):执行
num1 = 10,程序停在num2 = 20。 - 再按几次 F6,直到程序停在
sum_result = add(num1, num2)这一行。 - 按 F5 (Step Into):你会进入
add函数,程序停在print(f"正在计算 {a} + {b}")这一行,你可以看到Variables视图中的变量已经变成了a和b。 - 在
add函数内部,你可以继续按 F6 来逐行执行。 - 当你执行到
add函数的最后一行return result时,按 F7 (Step Return):程序会立即执行完add函数的剩余部分,并返回到main函数中,停在print(f"加法结果是: {sum_result}")这一行。
高级调试技巧
条件断点
你不想在每次循环时都停下来,只想在某个特定条件下暂停?这时就需要条件断点。
- 右键点击你设置的断点(蓝色圆点)。
- 选择 "Breakpoint Properties"。
- 在 "Condition" 文本框中输入一个 Python 表达式,
i == 5(在循环中)或a > 100。 - 点击 "OK",这个断点只有在条件满足时才会触发。
日志点
有时候你不想打断程序,只想在某个地方打印一些变量的值来检查,这比手动加 print 语句然后重新运行代码要方便得多。
- 右键点击你想添加日志的代码行。
- 选择 "Add a Logpoint"。
- 在输入框中输入你想打印的内容,你可以使用变量,
f"当前 i 的值是: {i}, a 的值是: {a}"。 - 点击 "OK",你会看到一个绿色的菱形图标,程序运行到这里时,会打印日志但不会暂停。
异常断点
当你想捕获某个特定异常,或者在程序抛出任何异常时立即暂停,可以使用异常断点。
- 在 "Debug" 视图的工具栏上,点击 "Add Exception Breakpoint" 图标(一个带感叹号的红色圆圈)。
- 在 "Exception" 文本框中,输入你想捕获的异常类名,
ValueError,如果你想捕获所有异常,可以输入Exception。 - 点击 "OK",当程序中抛出这个异常时,调试器会自动暂停在抛出异常的那一行。
远程调试
远程调试允许你在本地机器上调试运行在另一台机器(如服务器、Docker 容器)上的 Python 程序,这需要使用 pydevd 库。
-
在远程服务器上,用
pip install pydevd安装库。 -
在你的远程代码的入口处,添加以下代码来连接到你的本地 Eclipse 调试器:
import pydevd # 'localhost' 指的是你运行 Eclipse 的机器的 IP 地址 # 5678 是默认端口,可以在 Eclipse 中配置 pydevd.settrace('localhost', port=5678, stdoutToServer=True, stderrToServer=True) -
在 Eclipse 中,配置一个远程调试配置:
Run->Debug Configurations...- 左侧选择 "Python Remote Debug"。
- 在 "Connection" 标签页,Host 填写远程服务器的 IP,Port 填写
5678。 - 点击 "Debug" 启动监听。
-
然后在远程服务器上运行你的 Python 脚本,本地 Eclipse 就会连接上并开始调试。
常见问题与解决方法
-
问题:点击 "Debug" 后,程序直接跑完,没有在任何断点处停下。
- 原因:可能你的代码文件没有被设置为 "Run" 或 "Debug" 的主文件。
- 解决:在 Eclipse 的 "Project Explorer" 中右键点击你的
.py文件,选择 "Set as Main Script"。
-
问题:程序停在断点,但 "Variables" 视图里看不到任何变量,或者显示
<module> is not defined。- 原因:你可能在
if __name__ == "__main__":之外设置了断点,或者在模块级别设置了断点,调试器此时可能还未进入正确的执行上下文。 - 解决:将断点设置在
main()函数内部或if __name__ == "__main__":之后的代码行。
- 原因:你可能在
-
问题:调试时,代码行号是灰色的,无法设置断点。
- 原因:你当前打开的文件可能不是 Python 文件(一个文本文件被误识别了),或者文件没有被项目正确识别。
- 解决:检查文件扩展名是否为
.py,并确保它在 Eclipse 项目中。
-
问题:PyDev 无法找到 Python 解释器。
- 原因:PyDev 配置中指向的 Python 路径不正确。
- 解决:进入
Window->Preferences->PyDev->Interpreter - Python,检查并重新配置你的 Python 解释器。
Eclipse + PyDev 的调试功能非常强大,熟练掌握这些技巧,特别是 断点、Step Over、Step Into、Step Return 以及 变量查看,将让你能够像侦探一样,一步步地剖析你的代码,快速定位和修复 Bug。
关键要点回顾:
- 设置断点:双击行号左侧。
- 启动调试:点击带虫子的 "Debug As" 按钮。
- 核心控制:
F8(Resume),F6(Step Over),F5(Step Into),F7(Step Return)。 - 信息查看:利用 "Variables" 和 "Expressions" 视图。
- 高级功能:善用条件断点、日志点和异常断点来提高效率。
祝你调试愉快!
