天天看點

如何跟蹤調試openstack源碼

調試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調試模式

如何跟蹤調試openstack源碼

此時就算成功了,我們可以在pdb模式下輸入pdb指令來達到跟蹤調試效果,比如:

l   檢視目前上下文代碼

如何跟蹤調試openstack源碼

n 代碼執行下一行

如何跟蹤調試openstack源碼

輸入相關變量名字,檢視變量的值,比如檢視kwargs的值

如何跟蹤調試openstack源碼

c 跳過目前斷點,程式繼續執行。

更多pdb操作自己百度。

繼續閱讀