NS2:建立Eclipse环境,及往Eclipse中添加Debug模式遇到的问题解决

一:建立Eclipse的NS2环境

前提是,根据此篇博文中的方法

http://blog.karthiksankar.com/ns2-eclipse/

安装好ns-2.34并开启eclipse的workspace.

中间可能遇到的问题如下,解决方法是一样的。

1. 如果选择create a new Makefile project from existing code的话,点击finish,eclipse没有任何反应。此处原因不详。

2. 如果按照此博文,选择C++project下面的Makefile project->Empty Project的话,eclipse报错如下:

/ns-2.34 overlaps location of another project:'ns-2.34'。

这是因为在此folder里面已经有了ns-2.34 的所有source code,所以你新建立的ns-2.34的project和此文件夹重名了。

 

上述两问题解决方法:依然选择File->New->C++ Project. Project type里面选择Makefile project->Empty Project.

Project name填ns-2.34, 将Use default location的勾去掉,选择你ns2的默认安装路径,比如/home/xxx/ns-allinone-2.34/ns-2.34,此时出现错误2.

这时资源管理器或者terminal 进入到/home/xxx/ns-allinone-2.34/ns-2.34, 将ns-2.34 整个文件夹剪切出来,错误消失。

此时点击next,finish。

打开workspace以后,将剪切出来的文件夹重新粘贴到/home/xxx/ns-allinone-2.34/ 文件夹下,与此目录下的ns-2.34文件夹合并。

OK,现在的eclipse for ns2已经可以使用了。

 

二:往Eclipse添加NS2的debug模式

前提是,依然依照上述博文做如下更改。

Changes to be made in Makefile.in file:

Add -g to the line CCOPT = @V_CCOPT@

CCOPT = @V_CCOPT@ -g

Add -DNDEBUG -DDEBUG to the end of the following line:

DEFINE = -DTCP_DELAY_BIND_ALL -DNO_TK @V_DEFINE@ @V_DEFINES@ @DEFS@-DNS_DIFFUSION -DSMAC_NO_SYNC 
-DCPP_NAMESPACE=@CPP_NAMESPACE@-DUSE_SINGLE_ADDRESS_SPACE -Drng_test -DNDEBUG -DDEBUG

 

更改后若使用 ./configure --enable-debug命令并make clean,make以后,会出现如下错误:

In file included from tcp/tcp-linux.cc:47:
tcp/tcp-linux.h:64:1: error: "DEBUG" redefined
<command-line>: error: this is the location of the previous definition
make: *** [tcp/tcp-linux.o] Error 1

原因是:上面添加的—DDEBUG与NS2自身所携带的DEBUG模式不能兼容,此为wikipedia给出的解释,目前ns小组正在进行debug解决此问题。

 

那么本人的选择是放弃ns2自身所带debug工具而使用DDEBUG,那么只需要重新./configure并make clean,make 即可。

此时依然会出现错误提示,一般格式如下:

mobile/shadowing-vis.cc: In member function ‘int ShadowingVis::getPropCond(float, float, float, float)’:
mobile/shadowing-vis.cc:294: error: ‘xx’ was not declared in this scope
mobile/shadowing-vis.cc:294: error: ‘yy’ was not declared in this scope
make: *** [mobile/shadowing-vis.o] Error 1

解决方法:将含有此部分的代码注释掉,比如上述错误可以将这段代码注释掉:

/*
#ifdef DEBUG
   printf("xx = %f  yy = %f\n", xx, yy);
   printf("pixel = %x\n", pixel[xIdx + yIdx * width]);
#endif

*/

提示:因为此时Eclipse已经可以debug了--依然是根据上述博文将debug选项设置完毕-- 所以,可以使用Eclipse对NS2进行编译,build之后就会出现上述错误提示,双击错误提示打开相应文档,找到上述代码,注释掉即可。

此类错误大约有3-4处,记不太清了,全部注释掉就可以了。

 

现在,NS2就可以正常工作了,理论上来讲,也可以debug了,但是笔者正在码代码,还没开始debug,所以对其debug是否有效不得而知。

正常使用后会更新此文。

更新2011.10.28. debug模式可以正常使用。

posted on 2011-10-20 14:25  傻子才悲伤  阅读(1107)  评论(0编辑  收藏  举报

导航