NS2模擬過程中解決動畫模擬節點未定義問題

來源:互聯網
上載者:User

原文地址: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檔案中節點在發資料之前必須已經存在,如果不存在就有會出錯,

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.