相信很多喜欢Java的人对eclipse都情有独钟。NS2程序的调试,可以用打印命令调试,这样太繁琐。也可以用gdb调试,个人觉得上手比较困难。相信各位学习NS2的新手,在看代码的时候,很多的函数或者变量,都不知道在哪里声明的,就会在程序中开始使用,往往令我们很困惑。

调试、阅读代码的烦恼,那么让eclipse来帮你解决吧

1、下载eclipse并安装CDT插件。CDT插件使得eclipse可以创建C、C++工程。下载CDT插件的时候注意和 clipse版本匹配。当然你也可以到eclipse的官方网站,直接下载一个专门开发C、C++的eclipse版本。这样就不用安装CDT插件了。

2、安装ns后,并不能调试ns,因为在安装时的编译链接操作并没有将调试信息加入到可执行文件ns中,此时的ns文件只有5M多大小。要调试ns,需要将调试信息加入到ns文件中,这就要修改Makefile文件,使其中的gcc命令加入-g选项,但这不需要手动修改,具体操作如下:

进入ns-allinone-2.27./ns2.27目录,执行命令
./configure --enable-debug
此操作会生成新的Makefile,查看新Makefile文件中的编译命令会发现增加了-g选项。增加了调试信息的ns文件有15M大小

3、在eclipse中,依次选择[File -> New -> Project -> C++ project -> Makefile project ]。填入Project 名称NS-2.27。将Use Default Location 的勾去掉。然后将Location 設成Makefile 所在的目录NS2.27。在toolchains中要选择Cygwin GCC。之后点击finish。

4、大功告成,这时候你可以查看eclipse的控制台Console,里面在疯狂的显示eclipse编译NS2的相关信息。貌似就是在Make。

5、如果很不幸,eclipse编译后出现3个错误,第一个错误是关于找不到namespace CPP_NAMESPACE,第二个、第三个……。下面教你修复这个错误,进入NS2 2.27目录,打开autoconf.h文件。将以下内容替换:

/* stl */
#ifdef __cplusplus
#define HAVE_STL 1

#define CPP_REQUIRES_NAMESPACE 1
#ifdef CPP_REQUIRES_NAMESPACE
using namespace CPP_NAMESPACE;
#endif /* CPP_NAMESPACE */
#endif /* __cplusplus */

替换为:

/* stl */
#ifdef __cplusplus
#define HAVE_STL 1
#define CPP_NAMESPACE std

#define CPP_REQUIRES_NAMESPACE 1
#ifdef CPP_REQUIRES_NAMESPACE
using namespace CPP_NAMESPACE;
#endif /* CPP_NAMESPACE */
#endif /* __cplusplus */

6、在Cygwin窗口重新make。在eclipse中NS2工程上右键-built configuration-build-all 。这次真的大功告成,如果还问题,我也没碰到,自己解决吧。

此后你看NS2 C++代码的时候,如果想看哪个变量或者方法的定义,就可用通过eclipse方便的找到。注意F3键的使用哟~~~

据说 Eclipse下图形界面下调试项目要比直接用gdb调试要方便的多。

最后:若果你不带tcl文件作为参数运行的时候,如果在console 输入puts “Hello world”等命令不能正确执行的话,在Run Configuration里面设置一个path路径,指向cygwin的bin目录。之后运行就可以了。祝好运~~~

【NS2】用eclipse调试NS2(转载)的更多相关文章

  1. 【NS2】TCL debug (转载)

    1.使用NS2进行模拟,就不可避免的会接触TCL/OTCL和C/C++.两者配合使用.一般设置场景啊,业务流啊,都使用TCL/OTCL来编写脚 本.要进行路由实验模拟的话,同一类的实验,这些脚本基本上 ...

  2. 【NS2】NS2修改MAC协议(转载)

    NS2版本:2.34   涉及NS2代码文件: ns-2.34/mac/channel.h ns-2.34/mac/channel.cc ns-2.34/mac/wireless-phyExt.h n ...

  3. eclipse调试(debug)的时候,出现Source not found,Edit Source Lookup Path,一闪而过

    问题描述 使用Eclipse调试代码的时候,打了断点,经常出现Source not found,网上找了半天,大部分提示点击Edit Source Lookup Path,添加被调试的工程,然而往往没 ...

  4. eclipse调试solr

    eclipse调试solr 现在solr的源码包,我这里是4.10.2, 编译, ant ivy-bootstrap ant eclipse 导入elipse,将solr/example/solr/下 ...

  5. Eclipse 调试的时候Tomcat报错启动不了

    Eclipse 调试的时候Tomcat报错启动不了 1.把所有的断点删掉 2.清理工程 3.在Tomcat里面删除项目 4.删除Tomcat的配置,重新配置一下

  6. Eclipse调试常用技巧(转)

    Eclipse调试常用技巧 转自http://daimojingdeyu.iteye.com/blog/633824 1. 条件断点 断点大家都比较熟悉,在Eclipse Java 编辑区的行头双击就 ...

  7. Eclipse调试时Application XXX is waiting for the debugger to attach的提示

    原文链接: http://blog.csdn.net/star_huang/article/details/7678845 最近Eclipse调试时总是出现Application XXX  is wa ...

  8. eclipse调试jdk源码

    摘要 介绍使用eclipse调试jdk源码 java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码.虽然官方的jdk自带了源码包src.zip,然而在debu ...

  9. linux + ffmpeg + eclipse 调试

    使用linux + ffmpeg + eclipse调试步骤OS : ubuntu 12.04Eclipse : 3.7.2 为Eclipse安装cdt插件,使其支持c/c++ 导入ffmpeg项目 ...

随机推荐

  1. Trees in a Wood UVA - 10214 欧拉函数模板

    太坑惹,,,没用longlong各种WA #include <iostream> #include <string.h> #include <cstdio> #in ...

  2. Redis源码解析:22sentinel(三)客观下线以及故障转移之选举领导节点

    八:判断实例是否客观下线 当前哨兵一旦监测到某个主节点实例主观下线之后,就会向其他哨兵发送"is-master-down-by-addr"命令,询问其他哨兵是否也认为该主节点主观下 ...

  3. 【html、CSS、javascript-2】CSS基础

    CSS CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离. 一 css的四种引入方式 1.行内式          ...

  4. vue-cli+webpack搭建简单的vue项目框架

    0.先去官网下载安装nodeJS 1.在cmd中输入命令 node -version    若出现node版本号 则安装成功 2.通过命令:cd 文件夹名     进入某具体文件夹后进行如下命令操作: ...

  5. div style标签内嵌CSS样式

    我们在DIV标签内.SPAN标签内.p标签等html标签内使用style属性直接设置div的样式. 一.在<div>标签内使用style设置css样式   -   TOP 1.实例html ...

  6. maven安装教程(Idea)

    下载网址:https://maven.apache.or 点击Download 根据需要下载需要的版本 1.解压下载好的安装包放入新创建的maven文件夹中 2.在系统变量中添加环境变量(建议改成M2 ...

  7. Django REST Framework之认证组件

    什么是认证 认证即需要知道是谁在访问服务器,需要有一个合法身份.认证的方式可以有很多种,例如session+cookie.token等,这里以token为例.如果请求中没有token,我们认为这是未登 ...

  8. 揭秘webdriver实现原理【转】

    通过研究selenium-webdriver的源码,笔者发现其实webdriver的实现原理并不高深莫测无法揣度.在这里以webdriver ruby binding的firefox-webdrive ...

  9. 精密MRAM芯片制造系统

    MRAM是一种非常复杂的薄膜多层堆叠,由10多种不同材料和超过30层以上的薄膜与堆叠组成,部分薄膜层的厚度仅达数埃,比人类的发丝还要薄500000倍,相近于一颗原子的大小,如何控制这些薄膜层的厚度.沉 ...

  10. 设置程序PrivatePath,配置引用程序集的路径(分离exe和dll)

    原文:设置程序PrivatePath,配置引用程序集的路径(分离exe和dll) 有时候我们想让程序的exe文件和dll文件分开在不同目录,这时候可以有3种方法 1.在app.config中配置 &l ...