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
相关文章
|
2天前
|
缓存 测试技术 数据安全/隐私保护
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第29天】本文通过深入浅出的方式,探讨了Python装饰器的概念、使用场景和实现方法。文章不仅介绍了装饰器的基本知识,还通过实例展示了如何利用装饰器优化代码结构,提高代码的可读性和重用性。适合初学者和有一定经验的开发者阅读,旨在帮助读者更好地理解和应用装饰器,提升编程效率。
|
9天前
|
开发者 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第22天】在Python的世界里,装饰器是一个强大的工具,它能够让我们以简洁的方式修改函数的行为,增加额外的功能而不需要重写原有代码。本文将带你了解装饰器的基本概念,并通过实例展示如何一步步构建自己的装饰器,从而让你的代码更加高效、易于维护。
|
5天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
10 3
|
10天前
|
开发框架 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第20天】在编程的海洋中,简洁与强大是航行的双桨。Python的装饰器,这一高级特性,恰似海风助力,让代码更优雅、功能更强大。本文将带你领略装饰器的奥秘,从基础概念到实际应用,一步步深入其内涵与意义。
|
8天前
|
机器学习/深度学习 缓存 数据挖掘
Python性能优化:提升你的代码效率
【10月更文挑战第22天】 Python性能优化:提升你的代码效率
10 1
|
11天前
|
机器人 Shell Linux
【Azure Bot Service】部署Python ChatBot代码到App Service中
本文介绍了使用Python编写的ChatBot在部署到Azure App Service时遇到的问题及解决方案。主要问题是应用启动失败,错误信息为“Failed to find attribute &#39;app&#39; in &#39;app&#39;”。解决步骤包括:1) 修改`app.py`文件,添加`init_func`函数;2) 配置`config.py`,添加与Azure Bot Service认证相关的配置项;3) 设置App Service的启动命令为`python3 -m aiohttp.web -H 0.0.0.0 -P 8000 app:init_func`。
|
15天前
|
Python
Python PDB命令介绍
【10月更文挑战第15天】 使用PDB的方式有两种,其中一种是在脚本中添加代码,不觉得这种方式比print好在哪里,所以这种方式此文不表。这里我们只学习PDB的命令行使用方式
31 4
|
15天前
|
人工智能 IDE 测试技术
使用通义灵码提升Python开发效率:从熟悉代码到实现需求的全流程体验
作为一名Python开发者,我最近开始使用通义灵码作为开发辅助工具。它显著提高了我的工作效率,特别是在理解和修改复杂代码逻辑方面。通过AI编码助手,我能够在短时间内快速上手新项目,实现新需求,并进行代码优化,整体效率提升了60%以上。通义灵码不仅加快了代码生成速度,还增强了代码的健壮性和稳定性。
|
15天前
|
数据处理 开发者 Python
Python中的列表推导式:一种优雅的代码简化技巧####
【10月更文挑战第15天】 本文将深入浅出地探讨Python中列表推导式的使用,这是一种强大且简洁的语法结构,用于从现有列表生成新列表。通过具体示例和对比传统循环方法,我们将揭示列表推导式如何提高代码的可读性和执行效率,同时保持语言的简洁性。无论你是Python初学者还是有经验的开发者,掌握这一技能都将使你的编程之旅更加顺畅。 ####
18 1
|
17天前
|
缓存 程序员 开发者
探索Python中的装饰器:一种优雅的代码增强技巧
【10月更文挑战第13天】 在本文中,我们将深入探讨Python中的装饰器,这是一种强大的工具,它允许程序员以简洁而高效的方式扩展或修改函数和类的行为。通过具体示例,我们将展示如何利用装饰器来优化代码结构,提高开发效率,并实现如日志记录、性能计时等常见功能。本文旨在为读者提供一个关于Python装饰器的全面理解,从而能够在他们的项目中灵活运用这一技术。
21 1