Chinaunix首页 | 论坛 | 博客
  • 博客访问: 31541
  • 博文数量: 6
  • 博客积分: 1499
  • 博客等级: 上尉
  • 技术积分: 118
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-05 22:31
个人简介

专注无线自组网技术。

文章分类

全部博文(6)

文章存档

2015年(1)

2012年(1)

2010年(2)

2009年(2)

我的朋友

分类: LINUX

2010-10-04 00:28:55

 

    调试NS-2的方法有很多,常用的有两种,gdb 和 kdevelop,前者是基于文本调试方式, kdevelop是集成开发环境,如VC集成开发环境一样,源代码的编写,编译,调试都可以轻松地完成,接下来介绍一下利用KDevelop调试NS-2的方法
 
1、进入  ~/ns-allinone-2.30/ns-2.30/, 修改Makefile, 让编译的结果带有调试信息在CCOPT = -Wall 中添加-g选项,即更改为 CCOPT =  -g  -Wall,保存退出。
 
2、将Makefile 改为 Makefile.am, 利用它来在KDevelop中自动添加相关文件并生成工程文件.
 
3、打开KDevelop, 选择菜单中 project | import existing project, 在弹出的对话中,路径定位到~/ns-allinone-2.30/ns-2.30/中,即Makefile.am所在路径。工程名称自己取一个,工程类型选择 Generic c++ Application(Custom Makefile)
 
4、点击确定,根据Makefile.am 自动生成KDevelop工程文件,并且自动导入所有需要的文件,工程建好后,在KDevelop 中可以看到NS中所定义的c++类,并可以方便地打开所需要编辑的文件进行编程工作。

5、把Makefile.am改回Makefile,在KDevelop内嵌的konsole里定位到~/ns-allinone-2.30/ns-2.30/下,执行make  clean  && make,  此时编译对象已添加了调试信息。

具体调试方法:
(1) 添加组件,或在现有组件上进行改进,建议先在现有组件上改进一点点,熟悉一下调试全过程。编程完 后,保存改动过的文件。
(2) 在KDevelop内嵌的konsole里定位到~/ns-allinone-2.30/ns-2.30/下,执行make,此时可能会出现一些语法错误, 根据错误信息进行修改, 保存,重新make, 直至消除所有基本的语法错误。
(3) Console 里运行ns, 进入交互模式(%)
(4) 在KDevelop中选择菜单命令 Debug | Attach to process, 在对话框中选择ns进程并确定,调试器就和NS进程绑定了。
(5) 选择Debug | run, 让ns进程继续运行。
(6) 在konsole里ns 的交互模式下运行所要仿真的脚本 xxx.tcl , 即输入命令Source xxx.tcl, 程序出错并暂停。
(7) 在KDevelop中调用调试功能,类似于VC,可以定位错误, 可以观察变量的值, 可以设置断点,可以单步调试。
    对于明显的segment fault,可以设置断点,单步调试,观察变量值轻易地解决,但对于逻辑错误,则需要按照你设计程序的流程,判断可能出错的地方,多设断点,耐心地进行调试。
阅读(1146) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-12-17 23:50:48

顶之! 师兄大牛!