打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
NS2仿真过程中解决动画仿真节点未定义问题

其实,这个问题已经出现很长时间了,但是直到昨天问题才得到解决。
问题描述
用NS2运行无线仿真,然后运行动画程序nam,但是运行过程中出现“node x is not defined"这样的问题。开始还以为是不是nam出现了问题,经过几步找错和查错,调试终于找到了问题的根源。
问题解决步骤
首先运行ns xxx.tcl,得到仿真的nam动画数据文件,我们假设为:test.nam。
然后用nam运行该数据文件,运行过程中出现节点未定义的错误,怀疑是nam程序的问题,决定对nam进行调试。
进入到nam的安装文件夹,修改Makefile,在选项中添加调试选项。CCOPT = -g -Wall
重新编译生成nam:make clean; make; make install
开始使用GDB进行调试:gdb nam
进入GDB之后输入命令:set args test.nam
然后在文件netmodel.cc的 NetModel::lookupNode()函数处设置断点:b netmodel.cc:1570。
然后开始运行程序,输入r然后回车;
运行到断点处,程序停止运行。此时就可以查找出错的原因了,输入命令p nodes_(存放节点链表的头指针),发现其值为空(= 0x0);于是断定问题的根源是在nam文件中存放节点的链表是空的,进而推知,问题处在test.nam文件而不是nam可执行文件。
打开nam文件查看,问题果然在此,因为在nam数据文件中并没有发现节点定义的语句(以n开头的语句)。
开始查找问题出现的原因,分析了一个成功运行的例子,得知无线节点必须使用setdest命令之后才会写到nam数据文件中(到现在原因还没有查明,期待您的评论)。
于是在仿真脚本文件中添加setdest命令,然后运行仿真,问题排除。
需要注意的一个问题是,在nam文件中节点在发数据之前必须已经存在,如果不存在就有会出错。

本人按上文方法测试,为节点加入
$ns at 0.0 "$node_($i) setdest $x $y 0.0"
后,果真不再报"ns2 node 0 is not defined ...",感谢高人,特拿来共享。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
科学网-段克松的博客-网络仿真利器NS-2无师自通七天速成系列Ⅱ: NS-2实例编写
第8章 电子电路仿真
PSPICE仿真流程
转:[Ref] NS2 Multicast Example / NS2 多播示例
ros node gdb调试
转:MFlood协议实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服