NS2-Eclipse集成开发调试

  • 格式:pdf
  • 大小:598.07 KB
  • 文档页数:7

NS2-Eclipse集成开发调试

Kevin Zhang from UESTC

E-mail: kezhang@uestc.edu.cn NS2 是开源的,因此其基本的编译和调试工具为GCC和GDB,不管你是将它安装在

Windows或者Linux中。在Windows系统中,GCC和GDB常见的承载平台为Cygwin。因此在

Windows中使用NS2一般建议大家先安装Cygwin,注意你必须安装GCC和GDB。NS2的调试

方式主要是直接使用GDB,在Cygwin现在版本中,它包含的GDB包有两种分别是2006XXX

和2004XXX,它们都是基于命令行的方式。早期的GDB中有图形调试方式,它们是2001XXX

或2002XXX,对现在已经熟悉了Windows操作方式的人来讲,命令行的方式的确有些不方便。

我使用的是NS-2.29,里面默认的GDB是2004版本的。

另外还有一种工具DDD,它是可以图形操作方式,底层是GDB。它提供了一个GDB的命

令窗口,和源码查看窗口。另外你可以直接在源码中设置断点,调试跟踪时,可以直观的查

看变量、参数等。比起命令行的操作方式方面多了,但调试时,响应速度比较慢。还有源码

查看窗口代码没有着色,没有层次感。

Eclipse主要是个Java研发环境,但其体系结构确保了对其他编程语言的支持。

C和C++ 语言都是世界上最流行且使用最普遍的编程语言,因此 Eclipse 平台(Eclipse

Platform)提供对C/C++ 研发的支持。因为 Eclipse 平台只是用于研发者工具的一个框架,

他不直接支持 C/C++;他使用外部插件来提供支持。CDT项目致力于为Eclipse平台提供功

能完全的C/C++集成研发环境(Integrated Development Environment,IDE)。虽然该项目的

重点是Linux,但他在可使用GNU研发者工具的任何环境(包括Win32(Win

95/98/Me/NT/2000/XP)、QNX Neutrino和 Solaris平台)中都能工作。

CDT 是完全用Java实现的开放源码项目(根据 Common Public License 特许的),他

作为Eclipse SDK平台的一组插件。这些插件将C/C++ 透视图添加到Eclipse工作台

(Workbench)中,现在后者能够用许多视图和向导连同高级编辑和调试支持来支持 C/C++

研发。

由于其复杂性,CDT 被分成几个组件,他们都采用单独插件的形式。每个组件都作为一

个单独自主的项目进行运作,有他自己的一组提交者、错误类别和邮件列表。但是,任何插件都是 CDT 正常工作所必需的。下面是 CDT 插件/组件的完整列表:

主 CDT 插件(Primary CDT plug-in)是“框架”CDT 插件。

CDT 功能 Eclipse(CDT Feature Eclipse)是 CDT 功能组件(Feature Component)。

CDT 核心(CDT Core)提供了核心模型(Core Model)、CDOM 和核心组件(Core

Component)。

CDT UI 是核心 UI、视图、编辑器和向导。

CDT 启动(CDT Launch)为诸如编译器和调试器之类的外部工具提供了启动机制。

CDT 调试核心(CDT Debug Core)提供了调试功能。

CDT 调试 UI(CDT Debug UI)为 CDT 调试编辑器、视图和向导提供了用户界面。

CDT 调试 MI(CDT Debug MI)是用于和 MI 兼容的调试器的应用程式连接器。

现在,让我们研究一下如何在实际应用程式中使用这些组件。

图1显示了 Eclipse 中的 C/C++ 项目:

图1 在带有 CDT 插件的 Eclipse 中编辑 C/C++ 项目 在下载和安装CDT之前,首先必需确保GNU C 编译器(GNU C compiler,GCC)连同任

何附带的工具(make、binutil 和 GDB)都是可用的。假如正在运行 Linux,只要通过使用

适用于您分发版的软件包管理器来安装研发软件包。在 Windows 平台上,将需要安装

Cygwin工具箱。Cygwin 是用于Windows的类UNIX 环境,他包括GCC移植连同任何必需的

研发工具,包括 automake 和 GNU 调试器(GNU Debugger,GDB)。Cygwin是在cygwin1.dll

库基础上构建的。Cygwin 的备用解决方案是 Minimalist GNU for Windows(MinGW)。该工

具是一组可免费获取、自由分发的特定于 Windows 的头文档和导入库,这些头文档和导入库和 GNU 工具集(他们允许您生成不依赖于任何第三方 DLL 的本机 Windows 程式)结合

在一起。假如您想要创建和 POSIX 兼容的 Windows 应用程式,那么 MinGW 是最好选择。

MinGW 甚至能够在 Cygwin 安装之上工作。Solaris 和 QNX 需要您从因特网下载并安装其

特定的 GCC、GNU Make binutils 和 GDB 移植。

假设您安装了适当的Java SDK/JRE和Eclipse平台SDK,并且他们都正常运行。CDT 以

两种“方式”可用:稳定的发行版和试运行版(nightly build)。试运行版未经完全测试,

但他们提供了更多的功能并改正了当前错误。安装之前,请检查磁盘上是否存在先前版本的

CDT,假如存在,请确保完全除去他。因为CDT没有可用的卸载程式,所以需要手工除去他。

为了检查先前版本是否存在,转至 CDT 插件所驻留的目录:eclipse/plugins。接着,除去

任何以org.eclipse.cdt 名称开头的目录。需要做的最后一件事情是从

workspace/.metadata/.plugins 和 features 除去 CDT 元数据目录 or.eclipse.cdt.*。

安装篇

在简要介绍了Eclipse以及CDT插件后,我们将通过例子和图片来展示将NS2嵌入

Eclipse开发集成环境带来的巨大好处,彻底告别UtraEdit以及gdb命令行调试等等。

(1)首先,下载并安装Cygwin,关于Cygwin的安装,我这里就不详细讲解了,很多资

料都有讲。

在安装Cygwin的时候,主要注意的是下列包必须被安装:

xorg-x11-bin,xorg-x11-bin-dlls,xorg-x11-devel,xorg-x11-libs-data,

xorg-x11-etc,gdb,gcc, gcc-g++, gawk, tar, gzip, make, patch, perl, w32api

这里gdb的版本很重要,尽量用最新的gdb,我之前使用过较早版本的gdb,发现似乎

不支持Eclipse所支持的GDB/MI环境。

然后设置系统运行环境,在系统环境变量中设置:

Path:C:\cygwin\bin;

Include: C:\cygwin\usr\include\w32api;

Lib: C:\cygwin\lib\w32api;

(2)安装java运行环境,我安装的版本是:jre-6u7-windows-i586-p-s

(3)接下来,安装Eclipse SDK,我安装的是3.4版本的:

eclipse-jee-europa-winter-win32。 (4)接着下载并安装CDT插件,选择在Windows环境下使用的版本,我的CDT插件版本

是org.eclipse.cdt-3.0.2-win32.x86,这里特别要注意的是CDT插件必须和Eclipse SDK

版本兼容,即必须选择合适的版本号,比如CDT2.0与Eclipse3.X兼容性就存在问题。之前

由于版本选择没有留意,造成部分不兼容,出现了很多问题。不管SDK和CDT选择什么样的

版本,只要兼容就可以,当然最好版本也不要太低了就是。

(5)接下来运行Eclipse,选择工作目录workspace folder,将默认目录选择为你安装

NS的目录,例如:c:\cygwin\home\username\ns-allinone-2.29\ns-2.29。

然后选择新建一个项目,新建项目选择:C++->Standard C++ Make Project

接着,键入ns-2.29作为项目名称,并将路径设置为安装NS的目录。

点击下一步后,设置Binary Parser Tab,选择Cygwin PE Parser and PE Windows Parser。

然后设置Indexer。

点击完成。

接着进行Run-Debug设置。

选择C/C++ Local Application,点击新建"New Launch Configuration", 选择ns-2.29

以及ns.exe文件。

将运行的tcl文件,我们可以通过控制台参数方式,将其执行。

使用篇

在安装完成NS-Eclipse集成开发环境之后,我们可以见此刻系统显示如下,NS整个工

程就被嵌入Eclipse+CDT环境当中了。

另外就是需要注意Build的设置。

关于Eclipse的使用以及Debug这里就不多讲了,相关的资料很多,和.NET环境开发

一样方便快捷。从下图我们可以看到我们的工作区。

下图为Debug环境,在其中可以设置断点,观察变量等,非常方便。关于Debug的基本

知识,这里也就不多将了。不清楚的可以去查阅相关Eclpise的书籍。

Kevin Zhang 2008.9于成电