zoukankan      html  css  js  c++  java
  • 【NS2】用eclipse调试NS2(转载)

    相信很多喜欢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目录。之后运行就可以了。祝好运~~~

  • 相关阅读:
    Exception 04 : java.lang.ClassNotFoundException: Could not load requested class : org.hsqldb.jdbcDriver
    Exception 03 : org.hibernate.MappingException: Unknown entity: org.hibernate.cfg.Configuration
    Exception 02 : java.lang.ClassNotFoundException: Could not load requested class : com.mysql.jdbc.Driver
    Exception 01 : org.hibernate.engine.jndi.JndiException: Error parsing JNDI name [foo]
    Hibernate的配置文件,hibernate.cfg.xml
    Struts2 框架使用 核心以及其他详细配置
    Eclipse项目小红叉
    关于使用 Spring 发送简单邮件
    SSH 结构中 不同角色登录,显示不同的菜单
    log4j.properties 日志文件的详细配置说明
  • 原文地址:https://www.cnblogs.com/helloWaston/p/4544822.html
Copyright © 2011-2022 走看看