ex
http://blog.sina.com.cn/s/blog_5d2054d901019vcj.html
(2013-04-16 15:49:51)
标签:
分类: NS2/3
之前使用NS2时就一直用Eclipse调试,现在换为NS3后,也想用Eclipse来调试,因此有了这篇日志的由来。
主要参考的文档是NS3官方给出的配置文档(HOWTO configure Eclipse with ns-3)。现在花了一天调通后感觉都对,可是在调的时候总不对。所以把其中犯的错误和需要注意的地方记录如下:
1) 官方文档首先花了较长篇幅(即Configure Mercurial 一节)介绍如何通过Mercurial创建本地版本库。这一段没啥好讲的。如果不需要版本库的同学,可以跳过这一节,直接在官网上下载NS3最新的release,解压到任一目录下即可。
2) Configure Waf Builder:
这一节即按照文档所说的进行配置即可。但这里我需要强调的是,在利用Eclipse build项目前,最好使用终端进入存放ns3的目录(即waf所在的目录),先运行命令行“./waf configure”,再进入eclipse,选择菜单「Project」-->「Build project」编译项目。如果先不执行./waf configure,实际在build时同样会提示先运行configure。实际上与使用终端安装NS3的步骤是一样的:即先运行./waf configure,再运行./waf编译系统。
我的Builder setting如下图所示。我为项目取名为NS3,因此与官方文档中略有不同。而在“Behaviour"标签页的配置与官方文档完全一致,这里就不上图了。
3) Configure Debugger:
这主要是为了调试时使用的。这里因为与官方文档有较大出入,因此调了半天才搞明白咋回事。
我先直接上图说明我的配置,然后再说明一下为什么会这样配置。
在官方文档中,对于C/C++ Application的选择是如下描述的:click on the "Search Project" button under the "C/C++ Application" section and type the name of the application (test in our case)。可实际上在我的eclipse中点击"Search Project"根本就无法选择相应的程序,如下图所示:
因此这里需要手工指定我们需要调试的程序是在什么位置。这一步是需要我们自己进入文件系统中去查找编译生成的目标文件放在哪个文件夹下。在我的系统中,它是被存放在../ns-3-dev/build/scratch目录下(即上上张图中显示的/home/zachary/.../ns-3-dev/scratch/myfirst,myfirst是程序名,相应源文件名称为myfirst.cc),因此我就直接指定该目录下我们需要调试的程序(源文件仍然是存放在目录../ns-3-dev/scratch目录下)。
在Environment标签页中,对变量LD_LIBRARY_PATH设置,其指定的是一些依赖库存放的目录。如果该文件夹指定不正确的话,在Debug程序时,可能出现如下的错误信息:
error while loading shared libraries: libns3-dev-test-debug.so: cannot open shared object file: No such file or directory
通过查找文件libns3-dev-test-debug.so所在的位置即可知道该目录该如何设置。
4) Configure To Run From Eclipse
这一节是完全按照官方文档进行设置,没有什么可说的。
配置完后,就可以使用Eclipse来Debug NS3的程序了。不过有一点不爽的是,似乎Eclipse不认识NS3的头文件,在IDE中会显示一大堆错误信息,如下图所示:
但这些错误显示并不影响编译和调试。
最后再说一下,如果在命令行中带参数运行程序时,需要将程序名和参数使用双引号一并包含,如:
./waf --run "RPS 4" (说明:RPS是程序名,"4"是参数)