“工欲善其事,必先利其器”。我们在基于某一个控制器开发SDN应用程序的时候,常常会遇到这样的问题,怎样去调试一个应用程序。
相信大家第一个程序开发是基于集成开发环境,比如Visual C++,Codeblocks,Eclipse等,因为这些工具能够提供非常方便的界面来帮助我们调试代码,包括各种编译选项的配置和调试时候观察变量和内存的情况。
后来,随着我们开发经验的提升,逐渐接触到了GDB或者PDB等工具,但是个人以为,这些命令行工具比起来集成开发环境来讲还是不太方便。
相信大多数想上手SDN的同学也会遇到这样的困扰,在我最初调试SDN应用程序时候,因为程序的规模有限,所以把所有自己想要得到的变量输出即可,但是,随着代码规模的增大,每次通过观察LOG输出已经不能满足需求,所以,需要一个集成工具的支撑。
首先我想到的是Eclipse,因为这个工具实在是太强大了,几乎所有的东西都可以配置,而且主流的语言都可以很方便的通过界面进行插件安装,例如PyDev。
其实网上已经有人问过这个问题(http://sourceforge.net/p/ryu/mailman/message/33550406/),但是通过搜索还没有得到很好的解答,因此,我觉得这边文章应该对大家还是特别有帮助的。
该篇文章主要讲述如何在Eclipse中搭建基于RYU控制器的开发环境。
0. 众所周知,Ryu是基于python编写的,那么在进行下面的步骤之前,大家需要自己首先配置和安装python环境。
我使用的平台是Ubuntu 14.04 64位的操作系统。因为在做SDN开发的同时,我还会写一些C++的代码,所以,我我选择的是Eclipse Mars 4.5.0 for C++ Developers版本。当然,大家如果想选择Java开发版本或者其他版本都可以的。
在Ubuntu下截图个人感觉确实没有Mac和Windows方便,尤其是下拉菜单的截图,用ubuntu自带的工具好像弄不了,所以使用了一个叫做Shutter的工具。这款工具功能还是挺强大的,建议大家可以使用一下。
1.我们在Eclipse的主界面中点击菜单中的Help(如上图所示),然后选择“Install New Software”
Eclipse Mars这个版本自带的软件库相对比较全,按照上图的配置搜索git即可。Git工具的主要意义在于能够方便的从GitHub上直接导入源代码到eclipse中,当然,如果大家愿意先下载源码到本地的话也可以省略这一步。
2.继续按照上面安装软件的步骤安装PyDev,这是eclipse下面向python应用程序开发的插件,如下图所示,直接默认下一步到安装完成即可,待软件安装完成时可能会需要重新启动eclipse。
3.新建一个PyDev项目,如下图所示:
4.导入Ryu源代码到新建的PyDev工程中。
右键项目,选择Import,下拉菜单中可以看到
选择“Clone URI”,然后next。
输入URI:https://github.com/osrg/ryu,如上图所示:
然后点击next,进入下一步后选择master分支,最后确定并将源代码导入到eclipse中。
5.编译源代码。
这个时候有两种方法可以编译和安装Ryu的源代码,一个是直接在命令行里进行编译和安装,一个是在eclipse中进行配置。
方法1:在命令行中,可以直接cd到Ryu源代码的目录中,然后按照readme中的提示python setup.py build和python setup.py install即可。
方法2:在eclipse中, 右键项目setup.py,选择run as->run configurations,然后arguments中写入build即可。编译之后会自动在工程中出现build的目录,其中包含了所有Ryu的功能。
6.运行最简单的基于Ryu的Hub应用程序,这是很多Ryu教程中最为基础的一个例子。
右键bin目录下的ryu-manager, 选择run as->run configurations,配置主函数入口和参数,如下图所示:
其中,simple_switch_13.py可以到ryu源码中按照图片中的路径进行查找。
7. 接下来,右键ryu-manager,选择run as->1 python run即可运行该应用程序。
8. 若想动态调试simple_switch_13.py这一程序,可以直接在eclipse中打开该程序并设置断点,右键ryu-manager,选择debug as->1 python run即可。
确认即可进入调试界面。
使用中出现任何问题可联系我QQ: 841224078或邮箱wangjunchao11@126.com,如有引用,请注明出处。
作者简介:王俊超,国家数学与先进计算实验室在读博士,研究方向为软件定义网络,高性能计算。