pdb调试cinder代码

简介: pdb调试cinder代码

调试步骤

修改代码添加断点

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
相关文章
|
3月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
199 26
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
363 1
|
3月前
|
机器学习/深度学习 算法 调度
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
192 1
|
2月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
253 100
|
2月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
413 95
|
3月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
257 104
|
3月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
457 99
|
2月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
155 88
|
3月前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
283 102
|
2月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。

推荐镜像

更多