mahonglin123456 发表于 2015-10-11 11:27:35

用pdb调试OpenStack

  点击打开链接
  1.创建文件creds:
  
exportSERVICE_TOKEN=xxx(3中输入的密码)
exportOS_TENANT_NAME=admin
exportOS_USERNAME=admin
export OS_PASSWORD=xxx
exportOS_AUTH_URL=http://localhost:5000/v2.0/
exportSERVICE_ENDPOINT=http://localhost:35357/v2.0
source creds就可以使用openstack了
2. 若想更改已安装的组件,再./stack.sh即可


Pdb调试Havana过程
1.      修改代码
在需要调试的地方加入:
import pdb; pdb.set_trace()(以在nova/compute/api.py:get_all()中加入pdb为例)
2.      重启服务
在相应的screen中用ctrl+c终止当前进程,然后按向上的方向键,就会出现启动服务的命令,按enter服务就起来了。
3.      开始调试:


显示有两个screen
screen –x stack
进入如下界面:



最下一行表示,每一个进程都有一个screen。带*号的表示当前的screen,可以同时按下ctrl+a+8和ctrl+a+2分别前进和后退,来切换不同的screen.
4.      在0$中输入nova list;切换到4$ n-api:


5.      开始使用pdb进行调试



6. 物理机重启后,可使用rejoin-stack.sh启动openstack服务
7. ctrl+a+shift+", 可以选择screen , 主要就不需要通过ctrl + aor ctrl + p 来回切换了:)。

参考资料
1.使用pdb调试openstack(How to debug openstackusing pdb )
http://blog.iyunv.com/hackerain/article/details/8373597
2. linux screen 命令详解
http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html

viewplaincopy
[*]ADMIN_PASSWORD=password
[*]MYSQL_PASSWORD=stackdb
[*]RABBIT_PASSWORD=stackqueue
[*]SERVICE_PASSWORD=$ADMIN_PASSWORD
[*]#enable_service rally
[*]SERVICE_TOKEN=password
[*]
[*]## vnc
[*]
[*]#enable_service n-spice
[*]#enable_service n-novnc
[*]#enable_service n-xvnc
[*]
[*]#GIT_BASE=https://code.iyunv.com
[*]# Reclone each time
[*]#RECLONE=yes
[*]RECLONE=no
[*]
[*]## For Keystone
[*]KEYSTONE_TOKEN_FORMAT=PKI
[*]
[*]## For Swift
[*]#SWIFT_REPLICAS=1
[*]#SWIFT_HASH=011688b44136573e209e
[*]
[*]# Enable Logging
[*]LOGFILE=/opt/stack/logs/stack.sh.log
[*]VERBOSE=True
[*]LOG_COLOR=True
[*]SCREEN_LOGDIR=/opt/stack/logs
[*]
[*]# Pre-requisite
[*]ENABLED_SERVICES=rabbit,mysql,key
[*]
[*]## If you want ZeroMQ instead of RabbitMQ (don't forget to un-declare 'rabbit' from the pre-requesite)
[*]#ENABLED_SERVICES+=,-rabbit,-qpid,zeromq
[*]
[*]## If you want Qpid instead of RabbitMQ (don't forget to un-declare 'rabbit' from the pre-requesite)
[*]#ENABLED_SERVICES+=,-rabbit,-zeromq,qpid
[*]
[*]# Horizon (Dashboard UI) - (always use the trunk)
[*]ENABLED_SERVICES+=,horizon
[*]HORIZON_REPO=https://github.com/openstack/horizon
[*]HORIZON_BRANCH=master
[*]
[*]# Nova - Compute Service
[*]ENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch
[*]
[*]######vnc
[*]ENABLED_SERVICES+=,n-novnc,n-xvnc
[*]
[*]
[*]#jjIMAGE_URLS+=",https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img"
[*]#IMAGE_URLS+=",http://172.28.0.1/image/cirros-0.3.0-x86_64-disk.img"
[*]
[*]
[*]# Nova Network - If you don't want to use Neutron and need a simple network setup (old good stuff!)
[*]#ENABLED_SERVICES+=,n-net
[*]
[*]## Nova Cells
[*]#ENABLED_SERVICES+=,n-cell
[*]
[*]# Glance - Image Service
[*]ENABLED_SERVICES+=,g-api,g-reg
[*]
[*]# Swift - Object Storage
[*]#ENABLED_SERVICES+=,s-proxy,s-object,s-container,s-account
[*]
[*]# Neutron - Networking Service
[*]# If Neutron is not declared the old good nova-network will be used
[*]ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron
[*]
[*]## Neutron - Load Balancing
[*]ENABLED_SERVICES+=,q-lbaas
[*]
[*]## Neutron - VPN as a Service
[*]ENABLED_SERVICES+=,q-vpn
[*]
[*]## Neutron - Firewall as a Service
[*]ENABLED_SERVICES+=,q-fwaas
[*]
[*]# VLAN configuration
[*]#Q_PLUGIN=ml2
[*]#ENABLE_TENANT_VLANS=True
[*]
[*]# GRE tunnel configuration
[*]Q_PLUGIN=ml2
[*]ENABLE_TENANT_TUNNELS=True
[*]
[*]# VXLAN tunnel configuration
[*]#Q_PLUGIN=ml2
[*]#Q_ML2_TENANT_NETWORK_TYPE=vxlan   
[*]
[*]# Cinder - Block Device Service
[*]VOLUME_GROUP="cinder-volumes"
[*]ENABLED_SERVICES+=,cinder,c-api,c-vol,c-sch,c-bak
[*]
[*]# Heat - Orchestration Service
[*]ENABLED_SERVICES+=,heat,h-api,h-api-cfn,h-api-cw,h-eng
[*]#IMAGE_URLS+=",http://fedorapeople.org/groups/heat/prebuilt-jeos-images/F17-x86_64-cfntools.qcow2"
[*]
[*]# Ceilometer - Metering Service (metering + alarming)
[*]#ENABLED_SERVICES+=,ceilometer-acompute,ceilometer-acentral,ceilometer-collector,ceilometer-api
[*]#ENABLED_SERVICES+=,ceilometer-alarm-notify,ceilometer-alarm-eval
[*]
[*]# Apache fronted for WSGI
[*]#APACHE_ENABLED_SERVICES+=keystone,swift
[*]APACHE_ENABLED_SERVICES+=keystone
以上为localrc文件,用于devstack安装时的配置文件,用git clone一份devstack的源码,将localrc文件copy过去,然后./stack,就可以了。



1.创建文件creds:
exportSERVICE_TOKEN=xxx(3中输入的密码)
exportOS_TENANT_NAME=admin
exportOS_USERNAME=admin
export OS_PASSWORD=xxx
exportOS_AUTH_URL=http://localhost:5000/v2.0/
exportSERVICE_ENDPOINT=http://localhost:35357/v2.0
source creds就可以使用openstack了
2. 若想更改已安装的组件,再./stack.sh即可


Pdb调试Havana过程
1.      修改代码
在需要调试的地方加入:
import pdb; pdb.set_trace()(以在nova/compute/api.py:get_all()中加入pdb为例)
2.      重启服务
在相应的screen中用ctrl+c终止当前进程,然后按向上的方向键,就会出现启动服务的命令,按enter服务就起来了。
3.      开始调试:


显示有两个screen
screen –x stack
进入如下界面:



最下一行表示,每一个进程都有一个screen。带*号的表示当前的screen,可以同时按下ctrl+a+8和ctrl+a+2分别前进和后退,来切换不同的screen.
4.      在0$中输入nova list;切换到4$ n-api:


5.      开始使用pdb进行调试



6. 物理机重启后,可使用rejoin-stack.sh启动openstack服务
7. ctrl+a+shift+", 可以选择screen , 主要就不需要通过ctrl + aor ctrl + p 来回切换了:)。

参考资料
1.使用pdb调试openstack(How to debug openstackusing pdb )
http://blog.iyunv.com/hackerain/article/details/8373597
2. linux screen 命令详解
http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html
页: [1]
查看完整版本: 用pdb调试OpenStack