OpenStack源码调试之路(0)——pycharm远程调试OpenStack

时间:2024-05-19 19:02:17

要阅读一个源码,最好的方法是调试代码,一步步跟踪,会使你对整个过程的理解更加透彻,对于OpenStack也是如此,虽然看过很多分析源码的书,但总是觉得对不上号,加上有需求,所以觉得自己对源码进行一番调试。最开始试过python的pdb调试,虽然大神都说怎么怎么好,但终归是控制台的操作,一点都不直观,最后找到使用pycharm远程调试的方法,觉得非常好用,windows下可视化界面,变量查看,追踪回溯,甚至可以和远程同步代码。。。。

首先说明,本文是参考了这位的博客,但在操作中觉得他说得不够详细,我也捣鼓了好久,所以特地把详细过程贴出来。

环境:

windows7安装的pycharm,然后OpenStack部署在VMWare里。

1.进入pycharm菜单的Run/Debug Configurations

OpenStack源码调试之路(0)——pycharm远程调试OpenStack

2.点左上角的+号,然后选择python remote debug,出来右边的界面,名字随便取,下面的IP填本机IP(需要能和安装OpenStack的远程主机互通),端口随便来个本地未被占用的。

OpenStack源码调试之路(0)——pycharm远程调试OpenStack

3.path mappings是设置本地机和远程机的目录映射,比如我远程机上OpenStack使用apt安装,都在/usr/bin/python2.7/dist-packages下,所以我把这个目录映射到本地的f盘下的一个路径,另一个是/usr/bin,没有用,主要是当时不知道哪些有用,把启动脚本一起映射了过来。

OpenStack源码调试之路(0)——pycharm远程调试OpenStack

4.拷贝pycharm安装目录下的egg文件到远程机上

python2拷贝pycharm-debug.egg

python3拷贝pycharm-debug-py3k.egg

5.在远程机上用easy_install安装egg文件

easy_install pycharm-debug.egg

6.配置文件同步,在Tools-Deployment-Configuration中,点击左上角+号添加一个sftp,host填远程机IP,端口22,Root path我用的默认的,用户名,密码填你远程机的登录用户名和密码,应该需要root用户(跟着这里开启),所以还需要远程机开放root用户远程连接。(root path我如果不用主目录就不能同步,不知道怎么回事)

OpenStack源码调试之路(0)——pycharm远程调试OpenStack

7.mappings项中也配置和第3步一样的路径映射,web path随便给,比如这里将远程机上的/home目录映射到F盘的某个目录下

OpenStack源码调试之路(0)——pycharm远程调试OpenStack

8.通过Tools-Deployment-Download from将代码下载到本地

OpenStack源码调试之路(0)——pycharm远程调试OpenStack

9.通过Tools-Deployment-Sync with Deployed to...

OpenStack源码调试之路(0)——pycharm远程调试OpenStack

如果出现这种情况,就点那个associate,然后根据你的文件类型选一种

OpenStack源码调试之路(0)——pycharm远程调试OpenStack

同步的时候,如果需要将本地修改同步到远端,则将图中圈起来的地方点成这个箭头

OpenStack源码调试之路(0)——pycharm远程调试OpenStack

同理,需要远端同步都本地就点成这个箭头

OpenStack源码调试之路(0)——pycharm远程调试OpenStack

完了之后点下图那个绿色箭头就可同步,有时需要先用前面那个刷新一下

OpenStack源码调试之路(0)——pycharm远程调试OpenStack

10.在你需要断点的地方(远程机上,也可以在本地加上,然后同步上去)加上以下代码

import pydevd
pydevd.settrace('192.168.126.1', port=12345, stdoutToServer=True, stderrToServer=True)

然后先在pycharm上启动你的这个远程调试工程

OpenStack源码调试之路(0)——pycharm远程调试OpenStack

然后在远端运行OpenStack,比如我调试Keystone,使用keystone提供的调试脚本启动。

OpenStack源码调试之路(0)——pycharm远程调试OpenStack

11.运行起来之后代码就会在你上一步填加那段代码的地方停下。