調試openstack源代碼是openstack開發者必備技能,但是還是有小白不知道,而且網上多數資料都是針對devstack部署的環境。
那麼我們按照官網部署的普通環境如何調試呢?
其實很簡單,使用python内置的pdb工具即可。下面舉個例子來實踐一下。
① 首先确定你要調試的代碼屬于openstack哪個服務。比如說最常見的建立安全組規則,屬于neutron-server服務。我們要做的第一步就是把該服務,neutron-server停掉。
systemctl stop neutron-server
② 找到你需要調試的代碼位置,加入pdb斷點,比如我要調試建立預設安全組規則代碼,就需要在源代碼處加入斷點。
import pdb;pdb.set_trace(),如圖:
def create_security_group(self, context, security_group, default_sg=False):
###########下面這一行就是我加入的pdb斷點#########
import pdb;pdb.set_trace()
s = security_group['security_group']
kwargs = {
'context': context,
'security_group': s,
'is_default': default_sg,
}
self._registry_notify(resources.SECURITY_GROUP, events.BEFORE_CREATE,
exc_cls=ext_sg.SecurityGroupConflict, **kwargs)
.............後面的省略
③ 有了斷點以後,就可以跟蹤調試源碼了,使用bash指令啟動之前被停掉的服務(千萬不要用systemctl,否則進不了斷點)。
/usr/bin/neutron-server
④ 在dashboard或者調用API觸發被調試邏輯,我這裡在dashboard建立一個安全組。稍後會發現,控制台進入了pdb調試模式

此時就算成功了,我們可以在pdb模式下輸入pdb指令來達到跟蹤調試效果,比如:
l 檢視目前上下文代碼
n 代碼執行下一行
輸入相關變量名字,檢視變量的值,比如檢視kwargs的值
c 跳過目前斷點,程式繼續執行。
更多pdb操作自己百度。