如何跟蹤調試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調試模式

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

l   查看當前上下文代碼

n 代碼執行下一行

輸入相關變量名字,查看變量的值,比如查看kwargs的值

c 跳過當前斷點,程序繼續執行。

更多pdb操作自己百度。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章