使用 pdb 调试 OpenStack

  • pdb 的使用

pdb 常用命令 | 命令 | 解释 | | ——————- | ————————– | | break 或 b 设置断点 | 设置断点 | | continue 或 c | 继续执行程序 | | list 或 l | 查看当前行的代码段 | | step 或 s | 进入函数 | | return 或 r | 执行代码直到从当前函数返回 | | exit 或 q | 中止并退出 | | next 或 n | 执行下一行 | | pp | 打印变量的值 | | help | 帮助 |

  • 在需要进行断点调试的代码处插入下列代码
1
import pdb; pdb.set_trace()
  • 使用下面的命令手动关闭 openstack 相关服务,同时查看相应服务的启动命令,并自行手动通过命令启动对应服务
1
2
3
systemctl stop devstack@n-cpu
systemctl show devstack@n-cpu
/usr/local/bin/nova-compute --config-file /etc/nova/nova-cpu.conf
  • 手动使用 nova boot 命令创建虚拟机,这时手动启动的服务应该就会出现 pdb 的界面等待你的调试了
1
nova --debug boot --flavor m1.tiny --image cirros-0.3.5-x86_64-disk test
  • 需要注意的是,如果对应的服务是涉及到和 WSGI 相关的话,在启动相应服务的时候需要做一点变化,因为 WSGI 比较特殊些,需要加一个 --honour-stdin 参数进行调试。比如如果要调试 nova-api 就应该使用下面的命令进行服务的启动。
1
/usr/local/bin/uwsgi --procname-prefix nova-api --ini /etc/nova/nova-api-uwsgi.ini --honour-stdin