[转]NS2仿真过程中解决动画仿真节点未定义问题
原文地址:http://blog.myspace.cn/e/400266384.htm
?
其實,這個問題已經(jīng)出現(xiàn)很長時間了,但是直到昨天問題才得到解決。
問題描述
用NS2運行無線仿真,然后運行動畫程序nam,但是運行過程中出現(xiàn)“node x is not defined"這樣的問題。開始還以為是不是nam出現(xiàn)了問題,經(jīng)過幾步找錯和查錯,調(diào)試終于找到了問題的根源。
問題解決步驟
首先運行ns xxx.tcl,得到仿真的nam動畫數(shù)據(jù)文件,我們假設(shè)為:test.nam。
然后用nam運行該數(shù)據(jù)文件,運行過程中出現(xiàn)節(jié)點未定義的錯誤,懷疑是nam程序的問題,決定對nam進(jìn)行調(diào)試。
進(jìn)入到nam的安裝文件夾,修改Makefile,在選項中添加調(diào)試選項。CCOPT = -g -Wall
重新編譯生成nam:make clean; make; make install
開始使用GDB進(jìn)行調(diào)試:gdb nam
進(jìn)入GDB之后輸入命令:set args test.nam
然后在文件netmodel.cc的 NetModel::lookupNode()函數(shù)處設(shè)置斷點:b netmodel.cc:1570。
然后開始運行程序,輸入r然后回車;
運行到斷點處,程序停止運行。此時就可以查找出錯的原因了,輸入命令p nodes_(存放節(jié)點鏈表的頭指針),發(fā)現(xiàn)其值為空(= 0x0);于是斷定問題的根源是在nam文件中存放節(jié)點的鏈表是空的,進(jìn)而推知,問題處在test.nam文件而不是nam可執(zhí)行文件。
打開nam文件查看,問題果然在此,因為在nam數(shù)據(jù)文件中并沒有發(fā)現(xiàn)節(jié)點定義的語句(以n開頭的語句)。
開始查找問題出現(xiàn)的原因,分析了一個成功運行的例子,得知無線節(jié)點必須使用setdest命令之后才會寫到nam數(shù)據(jù)文件中(到現(xiàn)在原因還沒有查明,期待您的評論)。
于是在仿真腳本文件中添加setdest命令,然后運行仿真,問題排除。
需要注意的一個問題是,在nam文件中節(jié)點在發(fā)數(shù)據(jù)之前必須已經(jīng)存在,如果不存在就有會出錯,
總結(jié)
以上是生活随笔為你收集整理的[转]NS2仿真过程中解决动画仿真节点未定义问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]如何编写 INF 文件
- 下一篇: undefined reference