對于很多剛剛從事OpenStack相關(guān)的開發(fā)者來說,如何對OpenStack代碼進行debug,是一件很困惑,但又重要的事情。
以下會從自己學習debug的經(jīng)歷,來講述兩種debug OpenStack代碼的方法。
注:目標OpenStack調(diào)試環(huán)境均為devstack方式安裝。
- pdb調(diào)試
=========
這種方法是最簡單的調(diào)試方式,只需要在準備調(diào)試的代碼處加上以下代碼段,然后重啟服務(wù)即可。
import pdb
pdb.set_trace()
關(guān)于pdb調(diào)試的方法,網(wǎng)上有很多介紹詳盡的文檔,可以搜索參考。
進入斷點后常用的命令:
n 單步執(zhí)行
c 進入下一個斷點
q 退出
p 打印變量
dir(變量)查看變量結(jié)構(gòu)
此方法優(yōu)點是簡單,缺點也很明顯。
(1)功能不夠強大,不能通過IDE去調(diào)試
(2)不能直觀的觀察變量
etc.
- mac + SSH TUNNEL + PyCharm + SSHFS調(diào)試
======================================
首先,你需要有一臺mac;
其次,在mac上安裝 SSH TUNNEL軟件,目前可用的下載鏈接為:http://xclient.info/s/ssh-tunnel.html
然后,安裝PyCharm
最后,安裝SSHFS,可參考鏈接:http://m.itdecent.cn/p/8723ba79f35a
下面具體說下重要步驟需要做的事情。
a. SSH TUNNEL安裝后,進行設(shè)置,與OpenStack目標環(huán)境建立反向代理連接。

b. 驗證是否建立成功:
在Mac上執(zhí)行 python -m SimpleHTTPServer 8899
在目標環(huán)境上執(zhí)行 curl 127.0.0.1:8899,確實是否有響應(yīng)
c. OpenStack目標環(huán)境安裝調(diào)試軟件包:
將PyCharm安裝目錄下的pycharm-debug.egg文件拷貝到OpenStack目標環(huán)境并安裝。
pycharm-debug.egg在mac上的位置:通過finder--》應(yīng)用程序 --》PyCharm圖標 --》右鍵顯示包內(nèi)容 --》Contents/debug-eggs目錄下
在目標環(huán)境執(zhí)行:easy_install pycharm-debug.egg
d. SSHFS掛載代碼目錄
將OpenStack目標環(huán)境的運行目錄掛載到本地,sshfs -C -o reconnect user@hostname:remote_dir local_dir
并通過PyCharm在mac上打開工程。
e. PyCharm調(diào)試設(shè)置:
Run-->Edit Configuration--> + Python Remote Debug,具體請參照下圖。

Run --> Debug xxxx
f. 調(diào)試
在需要調(diào)試的代碼處輸入以下兩行:
import pydevd
pydevd.settrace('127.0.0.1', port=8899, stdoutToServer=True, stderrToServer=True)
在目標環(huán)境執(zhí)行相應(yīng)操作即可進入PyCharm的Debug步驟。