杰瑞科技汇

如何在 Eclipse 中调试 Python 代码?

  1. PyDev 插件(最推荐,功能最全)
  2. Eclipse 内置的 Debug 配置 + 外部调试器(轻量级,无需额外插件)

使用 PyDev 插件(最推荐)

PyDev 是一个功能强大的 Eclipse 插件,它将 Eclipse 变成了一个功能齐全的 Python IDE,集成了语法高亮、代码补全、重构和强大的调试器

步骤 1: 安装 PyDev 插件

  1. 打开 Eclipse (Help -> Eclipse Marketplace...)。
  2. 在搜索框中输入 "PyDev"。
  3. 找到 "PyDev" 插件,点击 Install
  4. 按照提示完成安装,然后重启 Eclipse。

步骤 2: 配置 Python 解释器

安装完 PyDev 后,需要告诉 Eclipse 使用哪个 Python 解释器来运行你的代码。

  1. 打开 Window -> Preferences
  2. 在左侧导航栏中,展开 PyDev -> Interpreter - Python
  3. 点击右侧的 New 按钮。
  4. 在弹出的窗口中,选择你系统中已安装的 Python 可执行文件(python.exepython3.exe),Eclipse 会自动检测到。
  5. 点击 OK,PyDev 会扫描你已安装的库,等待扫描完成,点击 OK 保存配置。

步骤 3: 创建 Python 项目

  1. File -> New -> Project...
  2. 选择 PyDev -> PyDev Project,点击 Next
  3. 输入项目名称(MyPythonProject)。
  4. 确保已选中正确的解释器(在 Interpreter 下拉菜单中)。
  5. 点击 Finish

步骤 4: 编写代码并设置断点

  1. 在项目上右键,New -> PyDev Module,创建一个 Python 文件(debug_example.py)。

  2. 编写一些简单的代码:

    # debug_example.py
    def fibonacci(n):
        """返回斐波那契数列的第 n 个数"""
        if n <= 1:
            return n
        else:
            return fibonacci(n - 1) + fibonacci(n - 2)
    if __name__ == "__main__":
        num = 10
        print(f"计算斐波那契数列的第 {num} 个数...")
        result = fibonacci(num)
        print(f"结果是: {result}")
  3. 设置断点:在代码行号左侧的灰色区域单击鼠标左键,你会看到一个蓝色圆点出现,这表示一个断点,在第 8return fibonacci(n - 1) + fibonacci(n - 2) 上设置一个断点。

步骤 5: 启动调试会话

  1. 确保你有一个 Python 文件被打开(debug_example.py)。
  2. 点击 Eclipse 工具栏上的“调试”按钮(一个带有小虫子的图标)。
  3. 首次运行时,Eclipse 会提示你选择一个配置,选择 Python Run,然后点击 OK

Eclipse 会切换到调试透视图,程序会在你设置的断点处暂停。

步骤 6: 使用调试工具

在调试透视图下,你会看到几个关键的窗口:

  • Debug 视图:显示当前正在执行的线程和堆栈帧,你可以在这里看到代码执行到了哪个函数的哪一行。
  • Variables 视图:显示当前作用域内所有变量的值,你可以展开对象,查看其内部属性。
  • 编辑器:代码行会高亮显示,并且有一个绿色箭头指示下一步将要执行的代码。

常用的调试操作按钮:

按钮 名称 功能 快捷键
如何在 Eclipse 中调试 Python 代码?-图1 Resume (F8) 恢复程序执行,直到遇到下一个断点。 F8
如何在 Eclipse 中调试 Python 代码?-图2 Step Over (F6) 单步跳过,执行当前行,如果当前行是一个函数调用,它会完整地执行该函数,然后停在下一行。 F6
如何在 Eclipse 中调试 Python 代码?-图3 Step Into (F5) 单步进入,如果当前行是一个函数调用,则进入该函数内部,停在函数的第一行,如果不是函数调用,效果同 Step Over F5
如何在 Eclipse 中调试 Python 代码?-图4 Step Return (F7) 单步返回,当在一个函数内部时,执行完当前函数的剩余部分,并返回到调用该函数的下一行。 F7
如何在 Eclipse 中调试 Python 代码?-图5 Drop to Frame 将调用堆栈回退到指定的帧,并重新执行,这可以让你重新运行一部分代码,非常强大但需谨慎使用。 -
如何在 Eclipse 中调试 Python 代码?-图6 Terminate (Ctrl+F2) 终止整个调试会话。 Ctrl+F2
如何在 Eclipse 中调试 Python 代码?-图5 Toggle Line Breakpoint (Ctrl+Shift+B) 切换当前行的断点。 Ctrl+Shift+B

调试技巧:

  • 条件断点:在断点上右键 -> Breakpoint Properties,可以设置一个条件表达式,只有当条件为 True 时,断点才会触发,这对于循环中调试特定情况非常有用。
  • 监视表达式:在 Debug 视图下方,通常会有一个 Expressions 标签页,你可以在这里添加任意表达式(如 n + 1my_list[0]),它的值会在调试过程中实时显示。
  • 修改变量值:在 Variables 视图中,可以选中一个变量,右键选择 Change Value...,在调试过程中动态修改它的值来测试不同场景。

使用 Eclipse 内置 Debug 配置(无需插件)

这种方法利用了 Eclipse 的通用调试框架,通过一个外部脚本启动 Python 的调试服务器(pdb),Eclipse 作为客户端连接它,这种方法功能相对基础,但胜在轻量,且不依赖特定插件。

步骤 1: 创建一个启动脚本

在你的项目根目录下创建一个 .pydev 文件夹(如果不存在),然后在其中创建一个启动脚本,launch_pdb.py

# .pydev/launch_pdb.py
import pdb
import sys
import os
# 将你的项目根目录添加到 sys.path,确保能导入模块
project_root = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, project_root)
# 导入并运行你的主程序
# 将 'debug_example' 替换为你的主模块名
if __name__ == '__main__':
    # 设置断点
    pdb.set_trace()
    # 运行你的代码
    from debug_example import fibonacci
    num = 10
    print(f"计算斐波那契数列的第 {num} 个数...")
    result = fibonacci(num)
    print(f"结果是: {result}")

步骤 2: 创建一个远程调试配置

  1. 在 Eclipse 中,点击工具栏的“调试”按钮旁边的下拉箭头,选择 Debug Configurations...
  2. 在左侧窗口中,右键点击 Remote Java Application,选择 New
  3. 配置新创建的调试配置:
    • Name: 给它一个名字,Python Remote Debug
    • Project: 选择你的 Python 项目。
    • Connection Type: 选择 Socket Attach
    • Host: localhost (如果你的调试器和程序在同一台机器上)。
    • Port: 5678 (这是一个常用端口,你可以修改,但需要和下面的脚本保持一致)。
  4. 点击 ApplyDebug

Eclipse 会进入调试透视图,但此时会显示 "未连接"。

步骤 3: 运行 Python 脚本进行连接

  1. 打开一个终端(命令行)。
  2. 进入你的 Eclipse 项目目录。
  3. 运行启动脚本:python .pydev/launch_pdb.py

当脚本执行到 pdb.set_trace() 时,它会暂停并等待连接,如果一切正常,你会看到类似 (Pdb) 的提示符。

步骤 4: 连接并调试

回到 Eclipse 的调试透视图,你应该会看到连接成功,程序停在了 pdb.set_trace() 的那一行,接下来的操作(单步、查看变量等)和方法一完全相同。


总结与对比

特性 PyDev 插件 Eclipse 内置 Debug
易用性 非常高,集成在 IDE 中,一键启动。 较低,需要手动创建启动脚本和配置。
功能 非常强大,条件断点、监视点、图形化调试等。 基础,主要依赖 pdb 的功能。
依赖 需要安装 PyDev 插件。 无需额外插件,纯 Eclipse 功能。
适用场景 绝大多数情况下的首选,适合所有 Python 开发者。 适合无法安装插件或需要特定调试器(如 pdb)的轻量级场景。

对于绝大多数用户,强烈推荐使用方法一(PyDev 插件),它提供了最无缝、最强大的调试体验,是使用 Eclipse 进行 Python 开发的标准方式,方法二则可以作为了解或在没有插件权限的环境下的备选方案。

分享:
扫描分享到社交APP
上一篇
下一篇