pdb调试cinder代码

251 阅读1分钟

调试步骤

修改代码添加断点


scheduler_path='/usr/lib/python2.7/site-packages/cinder/cmd/scheduler.py'

tail -n 20  ${scheduler_path}

# 删除掉 原有断点
sed -i 's/import pdb;pdb.set_trace();\n//g'  ${scheduler_path}


# 打上 新断点

sed -i 's/def main():/def main():\n    import pdb;pdb.set_trace();/g' ${scheduler_path}


tail -n 20  ${scheduler_path}

停止 服务 并 手动 启动


systemctl stop openstack-cinder-scheduler

# 观察 启动 命令
systemctl status openstack-cinder-scheduler
-->
ExecStart=/usr/bin/cinder-scheduler --config-file /usr/share/cinder/cinder-dist.conf --config-file /etc/cinder/cinder.conf --logfile /var/log/cinder/scheduler.log

# 指定 cinder 用户 启动

su -s /bin/bash -c '/usr/bin/cinder-scheduler --config-file /usr/share/cinder/cinder-dist.conf --config-file /etc/cinder/cinder.conf --logfile /var/log/cinder/scheduler.log'  cinder

-> 成功进去 pdb
> /usr/lib/python2.7/site-packages/cinder/cmd/scheduler.py(47)main()
-> objects.register_all()
(Pdb)
l : 查看 附近代码

s :单步进行,并 且进入函数

n :单步进行 不进入 函数

![python 代码 片段]  执行代码

调试完成后 不要 忘记 启动 服务 哦


scheduler_path='/usr/lib/python2.7/site-packages/cinder/cmd/scheduler.py'

sed -i 's/import pdb;pdb.set_trace();\n//g'  ${scheduler_path}

tail -n 20  ${scheduler_path}

systemctl start openstack-cinder-scheduler

断点 打印


147
148 B->         self.manager = manager_class(host=self.host,
149                                          service_name=service_name,
150                                          *args, **kwargs)
151             self.report_interval = report_interval
152             self.periodic_interval = periodic_interval
153             self.periodic_fuzzy_delay = periodic_fuzzy_delay
(Pdb) p manager_class
<class 'cinder.scheduler.manager.SchedulerManager'>


调试 scheduler 记录


(Pdb) n
> /usr/lib/python2.7/site-packages/cinder/scheduler/manager.py(66)__init__()

    def __init__(self, scheduler_driver=None, service_name=None,
                 *args, **kwargs):

-> scheduler_driver = CONF.scheduler_driver

 65             if not scheduler_driver:
 66                 scheduler_driver = CONF.scheduler_driver
(Pdb) p CONF.scheduler_driver
'cinder.scheduler.filter_scheduler.FilterScheduler'

(Pdb) p kwargs
{'host': 'node01'}



调试 调度器

su  -s /bin/bash -c '/usr/bin/python2 /usr/bin/cinder-scheduler --config-file /usr/share/cinder/cinder-dist.conf --config-file /etc/cinder/cinder.conf --logfile /var/log/cinder/scheduler.log '  cinder