调试

使用 PyCharm,您可以使用位于另一台计算机上的解释器调试您的应用程序,例如,在 Web 服务器或专用测试机器上。

PyCharm 提供了两种远程调试方式:

  • 通过远程翻译

    案例:使用这种方法来利用远程机器上可用的扩展调试功能。

    要求:从本地机器到远程服务器的 SSH 访问。

  • 使用 Python远程调试服务器配置。

    案例:使用这种方式将调试过程集成到远程服务器上一系列正在运行的进程中。当您无法显式运行应用程序进行调试或需要一些准备任务时,这可能会很有帮助。

    要求:从本地机器到远程服务器的SSH访问,从远程服务器使用任何预定义的端口访问本地机器。

在你开始之前

完成以下准备任务:

  1. 在本地机器上,创建一个纯 Python 项目,如创建 Python 项目一节中所述。

  2. 将 Python 文件添加到此项目 ( Alt+Insert- Python File )。

  3. 将以下代码添加到Python 文件中:

    导入数学类求解器:def demo(self, a, b, c): d = b ** 2 - 4 * a * c if d > 0: disc = math.sqrt(d) root1 = (-b + disc) / (2 * a) root2 = (-b - disc) / (2 * a) return root1, root2 elif d == 0: return -b / (2 * a) else: return "This equation has no roots" if __name__ == '__main__': 求解器 = Solver() 而真:a = int(input("a: ")) b = int(input("b: ")) c = int(input("c: ")) result = solver.demo(a, b, c) print(结果)

为远程解释器创建部署配置

在此示例中,运行应用程序的机器被称为local,带有远程解释器的机器被称为remote

配置远程解释器

  1. 确保您对远程计算机具有 SSH 访问权限。

  2. 将新的远程解释器添加到项目中,如使用 SSH 配置解释器中所述,指定连接到远程计算机的凭据。

  3. 为项目创建远程解释器后,就会创建相应的部署配置。要预览它,请单击Ctrl+Alt+S以在本地计算机上打开“设置”对话框窗口,然后单击“构建”、“执行”、“部署”节点和“部署”节点。

    部署配置
  4. 如果需要,您可以接受所有默认设置或更改它们。对于此示例,让我们为您的部署配置使用一个有意义的名称,例如“MySFTPConnection”。

  5. 确保Root 路径值反映了在创建的 SSH 解释器的相应设置中指定的路径。

    路径映射验证

    检查项目中的路径解释器| Python解释器设置/首选项,展开项目中可用解释器的列表| Python Interpreter,选择Show All...,然后单击显示解释器路径。所选解释器的现有路径显示在解释器路径对话框中。

现在您的部署配置已准备就绪。

将您的应用程序部署到远程主机

接下来,您的应用程序必须部署到远程主机。

  1. 工具菜单上,选择部署 | 上传到 MySFTPConnection

  2. 出现文件传输工具窗口。验证传输文件的数量。

    文件传输窗口

调试您的应用程序

  1. 右键单击编辑器背景并选择Debug <name>(此处为Debug 'quadratic_equation')。

  2. 查看调试输出。请注意,调试实际上发生在指定的远程服务器上。

    在远程服务器上调试

使用 Python 远程调试服务器配置进行远程调试

您还可以使用专用的运行/调试配置启用远程调试,即运行/调试配置:Python Debug

创建运行/调试配置

  1. 从主菜单中,选择运行| 编辑配置... . 运行/调试配置对话框打开。您必须单击添加配置工具栏上的 ,然后从可用配置列表中选择Python Debug Server

    添加 Python 远程调试配置
  2. 输入此运行/调试配置的名称 - 让它成为MyRemoteServer。指定运行 IDE 的机器的端口号(此处为12345)和IDE 主机名(此处为 172.20.208.95)。远程调试服务器将使用这些参数来访问它。

  3. 将本地机器上的路径映射到远程机器上的路径:

    路径映射
  4. 检查更新您的脚本说明。您可以使用PyCharm 安装(<PyCharm directory>/debug-egg/pydevd-pycharm.egg )中的pydevd-pycharm.egg或使用 pip安装包。pydevd-pycharm

    根据您的选择,执行以下更改:

    • pydevd-pycharm通过运行以下命令在远程计算机上安装软件包:

      pip install pydevd-pycharm~=<version of PyCharm on the local machine>

      例如,pip install pydevd-pycharm~=191.3490)

    • 修改源代码文件如下:

    导入数学#==============添加此代码============================== =====================================:import pydevd_pycharm pydevd_pycharm.settrace('172.20.208.95', 端口=12345, stdoutToServer=True, stderrToServer=True) #====================================== ==================================================== ======== class Solver: def demo(self, a, b, c): d = b ** 2 - 4 * a * c if d > 0: disc = math.sqrt(d) root1 = (-b + disc) / (2 * a) root2 = (-b - disc) / (2 * a) return root1, root2 elif d == 0: return -b / (2 * a ) else: return "这个方程没有根" if __name__ == '__main__': solver = Solver() while True: a = int(input("a: ")) b = int(input("b: ") ) c = int(input("c: ")) 结果 = solver.demo(a, b,c) 打印(结果)

    修改代码如下:

    导入数学#==============添加此代码============================== =====================================: import sys sys.path.append("<PyCharm 目录> /debug-egg/pydevd-pycharm.egg") import pydevd_pycharm pydevd_pycharm.settrace('172.20.208.95', port=12345, stdoutToServer=True, stderrToServer=True) #============= ==================================================== =================================类求解器:def demo(self,a,b,c):d = b ** 2 - 4 * a * c 如果 d > 0:圆盘 = math.sqrt(d) root1 = (-b + 圆盘) / (2 * a) root2 = (-b - 圆盘) / (2 * a) return root1, root2 elif d == 0: return -b / (2 * a) else: return "This equation has no roots" if __name__ == '__main__':solver = Solver() while True: a = int(input("a: ")) b = int(input("b: ")) c = int(input("c: ")) result = solver.demo( a, b, c) 打印(结果)

创建 SFTP 连接

  1. 在远程机器上,创建一个应该上传文件quadratic_equation.py的目录。您可以在终端窗口中执行此操作:

    $cd /tmp $mkdir pycharm_project_986
  2. 在本地计算机上,创建一个连接配置文件。从主菜单中,选择工具 | 部署 - 配置...... 在打开的对话框中,单击添加服务器,然后在Add Server对话框中选择连接类型(此处为 SFTP)并输入其名称(此处为 MySFTPConnection)。

  3. 在“连接”选项卡中,指定 SFTP 主机(远程机器的地址)、该机器的用户名和密码。

    请注意,指定的用户应该对远程主机具有 SSH 访问权限。

  4. 单击映射选项卡,然后在服务器中输入部署路径。服务器是MySFTPConnection,所以单击浏览按钮并选择所需的文件夹/tmp/pycharm_project_986。请注意,浏览按钮显示远程主机的内容。应用更改并关闭对话框。

将文件部署到远程机器

  1. 将以下文件部署到远程计算机:pydevd-pycharm.eggquadratic_equation.py

    在本地机器上,在Project tool window中,选择文件,右键单击选择并选择Deployment | 上传到 MySFTPConnection

  2. 检查“文件传输”对话框窗口以确保将本地计算机中的文件上传到远程服务器。

    文件传输窗口

启动调试服务器

  1. 选择创建的运行/调试配置,然后单击调试

    运行调试配置
  2. 确保Debug 工具窗口显示Waiting for process connection..消息。此消息将一直显示,直到您在远程计算机上启动脚本,并且此脚本将连接到调试服务器。

在远程机器上执行 Python 文件

  1. 在远程机器上,导航到tmp/pycharm_project_986目录。

  2. 在远程主机上启动quadratic_equation.py文件。为此,在终端窗口中,输入以下命令:

    $python3 二次方程.py

    $python 二次方程.py

    这种调试方法最有用的方面是,当远程调试是计划任务的一部分或需要在运行 Python 脚本之前执行一些准备步骤时,您可以使用任何bash脚本运行 Python 文件。如果是这种情况,请将以下几行添加到 bash 脚本的适当位置:

    cd /tmp/pycharm_project_986 python3 quadratic_equation.py

    cd /tmp/pycharm_project_986 python quadratic_equation.py

调试您的应用程序

  • 在您的本地机器上,切换到调试工具窗口。它应该显示与 pydev 调试器的连接。

    远程调试

    您的代码实际上是在远程主机上执行的,但在本地机器上进行调试。

概括

为了使用远程解释器进行调试,您必须通过 PyCharm 启动程序,这并不总是可行的。另一方面,在使用调试服务器时,您可以连接到正在运行的进程。

比较这两种方法。

在第一种情况下,我们

在第二种情况下,我们

最后修改:2021 年 10 月 28 日