现在的位置: 首页 > 综合 > 正文

在Ubuntu下给NS2配置GUI调试环境(转)

2012年02月25日 ⁄ 综合 ⁄ 共 1971字 ⁄ 字号 评论关闭

在早期的NS2中,支持Windows下的VC调试环境,但是貌似NS2.27后就不支持了。因此使用NS2最好在Linux下,那么在NS2下有没有图形调试环境呢?

 

环境:Eclipse 3.5.1 + CDT (参见前一篇安装)

 

 

1. 启动Eclipse, 建立C++ Project;

 

工程类型选用Makefile,编译器选择Linux C++(不太清楚它与Cross C++区别),工程路径选择ns-2.3*;

 

2. 编译,提示错误:G++ not found。但是我明明已经安装了build-essential。没办法,重新安装一篇,发现提示要安装g++.

 

$sudo apt-get install build-essential

 

3. 发现ns的开始运行点就是根目录下的ns_tclsh.cc文件,其中有一个main函数。

到这一步,还不能设置断点进行调试,必须先在Makefile上加入调试选项,方法:

 

$ ./configure --enable-debug

 

这一步就可以在Makefile上加入调试项-g,实际上是修改了Makefile中的CCOPT选项,在其中加入了-g -Wno-parentheses -Werror

 

这其中后面两项一加以后,在Eclipse里面编译时,发现会把许多以前是Warning的信息当成error。

 

 4. 接下来,根据http://hi.baidu.com/aoxinguy/blog/item/4eb310184d545373dbb4bd5f.html 提示的方法,加入地Tcl库的跟踪调试信息,即修改tcl8.4.*/unix下的Makefile文件,将其由Optimized模式改为Debug模式,如下:

 

# To change the compiler switches, for example to change from optimization to
# debugging symbols, change the following line:
#CFLAGS    = $(CFLAGS_DEBUG)
#CFLAGS    = $(CFLAGS_OPTIMIZE)
#CFLAGS    = $(CFLAGS_DEBUG) $(CFLAGS_OPTIMIZE)
CFLAGS    = $(CFLAGS_OPTIMIZE) -DTCL_DBGX=$(TCL_DBGX)

换成

# To change the compiler switches, for example to change from optimization to
# debugging symbols, change the following line:
#CFLAGS    = $(CFLAGS_DEBUG)
#CFLAGS    = $(CFLAGS_OPTIMIZE)
CFLAGS    = $(CFLAGS_DEBUG) $(CFLAGS_OPTIMIZE)
#CFLAGS    = $(CFLAGS_OPTIMIZE) -DTCL_DBGX=$(TCL_DBGX)

 

然后在当前目录下重新编译:

make clean

make

重新编译生成libtcl8.*.a 和libtclstub.*.a 两人静态库文件,这两个文件在NS2中会被用到。注意生成的新库要copy以ns2.3*/lib目录下。

 

相应的,也需要把其它几个静态库的Makefile手工修改一下,并且重新编译一下,即Tcl -> TK -> Otcl -> tclcl,注意编译顺序。 

上面Tcl,Tk安装方法倒是一样,但是Otcl安装却不一样。 

 

首先进入Otcl目录,然后:

$make clean

然后要手工修改一下configure文件,否则在ns2.34上编译出错:

把Configure文件的6304行由

SHLIB_LD="ld -shared"

修改为

SHLIB_LD="gcc -shared"

 

然后再生成Makefile文件,如下:

$./configure --enable-debug

 

最后:

$make

 

感谢aoxingguy提供的资料,非常有用,非常强悍!!

 

后记 :实际上,我安装好的过程花了一个星期,开始一直不能象前面那位兄弟说的进行到tclAppInit函数中跟踪,而我的配置过程也没有错。最终重新下载一个新的安装版本ns2.34,并且按照install的步骤手工一步一步才弄好。其真正的原因是我的一个环境变量LD_LIBRARY_PATH设置错了,导致在Eclipse中调试时,总是提示:

 

Reading symbols from /home/fanzz/ns-allinone-2.34/ns-2.34/ns...done.
Stopped due to shared library event
Stopped due to shared library event

 

 

参考:

 

在Eclipse中调试NS2

同上

在kdevelop上调试NS2

【上篇】
【下篇】

抱歉!评论已关闭.