如何调试OpenStack代码

对于很多刚刚从事OpenStack相关的开发者来说,如何对OpenStack代码进行debug,是一件很困惑,但又重要的事情。
以下会从自己学习debug的经历,来讲述两种debug OpenStack代码的方法。

注:目标OpenStack调试环境均为devstack方式安装。

  1. pdb调试
    =========

这种方法是最简单的调试方式,只需要在准备调试的代码处加上以下代码段,然后重启服务即可。

import pdb
pdb.set_trace()

关于pdb调试的方法,网上有很多介绍详尽的文档,可以搜索参考。
进入断点后常用的命令:

n 单步执行
c 进入下一个断点
q 退出
p 打印变量
dir(变量)查看变量结构

此方法优点是简单,缺点也很明显。
(1)功能不够强大,不能通过IDE去调试
(2)不能直观的观察变量
etc.

  1. mac + SSH TUNNEL + PyCharm + SSHFS调试
    ======================================

首先,你需要有一台mac;
其次,在mac上安装 SSH TUNNEL软件,目前可用的下载链接为:http://xclient.info/s/ssh-tunnel.html
然后,安装PyCharm
最后,安装SSHFS,可参考链接:http://www.jianshu.com/p/8723ba79f35a

下面具体说下重要步骤需要做的事情。

a. SSH TUNNEL安装后,进行设置,与OpenStack目标环境建立反向代理连接。

如何调试OpenStack代码_第1张图片
Paste_Image.png

b. 验证是否建立成功:

在Mac上执行 python -m SimpleHTTPServer 8899
在目标环境上执行 curl 127.0.0.1:8899,确实是否有响应

c. OpenStack目标环境安装调试软件包:

将PyCharm安装目录下的pycharm-debug.egg文件拷贝到OpenStack目标环境并安装。
pycharm-debug.egg在mac上的位置:通过finder--》应用程序 --》PyCharm图标 --》右键显示包内容 --》Contents/debug-eggs目录下
在目标环境执行:easy_install pycharm-debug.egg

d. SSHFS挂载代码目录

将OpenStack目标环境的运行目录挂载到本地,sshfs -C -o reconnect user@hostname:remote_dir local_dir
并通过PyCharm在mac上打开工程。

e. PyCharm调试设置:

Run-->Edit Configuration--> + Python Remote Debug,具体请参照下图。

如何调试OpenStack代码_第2张图片
Paste_Image.png

Run --> Debug xxxx

f. 调试

在需要调试的代码处输入以下两行:
import pydevd
pydevd.settrace('127.0.0.1', port=8899, stdoutToServer=True, stderrToServer=True)

在目标环境执行相应操作即可进入PyCharm的Debug步骤。

你可能感兴趣的:(如何调试OpenStack代码)