对于很多刚刚从事OpenStack相关的开发者来说,如何对OpenStack代码进行debug,是一件很困惑,但又重要的事情。
以下会从自己学习debug的经历,来讲述两种debug OpenStack代码的方法。
注:目标OpenStack调试环境均为devstack方式安装。
- pdb调试
=========
这种方法是最简单的调试方式,只需要在准备调试的代码处加上以下代码段,然后重启服务即可。
import pdb
pdb.set_trace()
关于pdb调试的方法,网上有很多介绍详尽的文档,可以搜索参考。
进入断点后常用的命令:
n 单步执行
c 进入下一个断点
q 退出
p 打印变量
dir(变量)查看变量结构
此方法优点是简单,缺点也很明显。
(1)功能不够强大,不能通过IDE去调试
(2)不能直观的观察变量
etc.
- 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目标环境建立反向代理连接。
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,具体请参照下图。
Run --> Debug xxxx
f. 调试
在需要调试的代码处输入以下两行:
import pydevd
pydevd.settrace('127.0.0.1', port=8899, stdoutToServer=True, stderrToServer=True)
在目标环境执行相应操作即可进入PyCharm的Debug步骤。