跳转到: 导航, 搜索

Manila/Debugging

随着 提议 中 Manila 的更改,设置源码级调试应该会很直接。本页描述了 PyCharm 的流程;欢迎使用其他 IDE(如 Eclipse/PyDev)来完善内容。

设计

需要几个组件

  1. 对 manila/bin 脚本(manila-api、manila-scheduler、manila-share)的更改,这些脚本启动各个 Manila 服务,以防止 eventlet.monkey_patch() 在调试活动时修补线程库。修补代码在启动序列中稍后调用,以允许处理配置选项,以免我们不知道调试是否处于活动状态。
  2. 两个新的 CLI 选项,pydev-debug-host 和 pydev-debug-port,用于指定调试器连接。这些选项与 Keystone 保持一致,尽管其他 OS 项目在这些选项的名称上有所不同 :-/ 第三个调试选项 standard-threads 可用,它不受 Keystone 的限制,可以防止线程库修补,但不会启动调试器连接。
  3. 将调试器连接代码插入到 Service Launcher 类中。

设置

远程调试

1. 确保您的 OpenStack 和 PyCharm 环境已安装 pydevd 库。它作为 egg 分发在 PyCharm 安装目录的顶层;有针对 Python 2.x 和 3.x 的两个单独的 egg。对于 Python 2,只需运行“easy_install pycharm-debug.egg”将其安装到您的 Python 路径中。

Pydevd.png


2. 在 PyCharm 中创建一个远程调试配置(运行-->编辑配置...-->Python 远程调试)。如果 OpenStack 和 PyCharm 主机上的代码位于不同的路径上(可能),请在远程调试配置中定义路径映射。

Manila debug remote.png


3. 调用调试配置(运行-->调试...-->(配置名称))。PyCharm 将开始侦听指定的端口。

4. 使用 pydev-debug-host 选项启动要调试的 Manila 服务,其中主机是运行 PyCharm 的系统。如果默认端口(58786)不合适,请使用 pydev-debug-port 选项指定不同的端口。

启动远程调试


5. 服务将连接到 PyCharm,此时远程调试处于活动状态。

Manila debug remote active.png


本地调试

1. 如果 PyCharm 正在本地运行 OpenStack,则本地调试尤其方便。如上所述安装 pydevd egg。

2. 创建本地配置。

本地调试配置


3. 调用调试配置,这将启动相关的 Manila 服务并将控制台输出路由到 PyCharm。