[转]NS2仿真过程中解决动画仿真节点未定义问题

原文地址:http://blog.myspace.cn/e/400266384.htm

 

其实,这个问题已经出现很长时间了,但是直到昨天问题才得到解决。
问题描述
用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文件中节点在发数据之前必须已经存在,如果不存在就有会出错,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值