



免費預覽已結束,剩余1頁可下載查看
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
NS2編程出錯調試實例1引言NS2缺乏比較好的調試工具,當我們編寫的一個比較長的TCL腳本出錯時往往不知道問題出在哪里。在調試NS2程序時,我們更重要的是要有耐心,仔細分析出錯的原因。經驗往往會在這時起到很重要的作用。下面是我調試一個腳本的經驗,希望能夠對調試TCL腳本有所啟發(fā)。2調試實例程序依舊是上次試驗的程序,即有四個節(jié)點進行消息傳送。這次的目的是查看即時的C+參數值,測量FTP那條TCP Flow的congestion window變化。具體程序參考0/smallko/ns2/module.htm后面部分的范例二。下面是我的程序,以及出錯的地方。紅色的部分是我的調試經驗。#set a simulatorset ns new Simulator#針對不同的資料流設定不同的顏色,這是給NAM用的$ns color 1 Blue$ns color 2 Red#開啟一個NAM trace fileset nf open out.nam w$ns namtrace-all $nf#開啟一個檔案,用來記錄封包傳送的過程set nd open out.tr w$ns trace-all $nd#開啟一個檔案,用來記錄TCP Flow的congestion window變化情況set wnd_trace open cwnd.tr w#定義一個記錄的程序,每個0.1秒就去查看目前TCP Flow的值proc record global ns tcp wnd_trace set time 0.1 #讀取C+內cwnd_的變量值 set curr_cwnd $tcp set cwnd_ set now $ns now puts $wnd_trace $now $curr_cwnd $ns at expr $now+$time record#定義一個結束的程序#這里把函數中第一行的wnd_trace寫成了wnd_race,運行給出的出錯信息為#ns: finish: cant read wnd_trace問題出現在這里: no such variable# while executing#close $wnd_trace# (procedure finish line 6函數是按這個函數的內部來排列行數的。)# invoked from within#finish#這說明問題出在finish這個函數proc finish procedure “finish” line 1 global ns nf nd wnd_race應該為wnd_traceline 2 $ns flush-traceline 3 close $nfline 4 close $ndline 5 close $wnd_traceline 6 #以背景執(zhí)行的方法去執(zhí)行NAM exec nam out.nam & exit 0#產生四個節(jié)點set n0 $ns nodeset n1 $ns nodeset n2 $ns nodeset n3 $ns node#把節(jié)點連接起來$ns duplex-link $n0 $n2 2Mb 10ms DropTail$ns duplex-link $n1 $n2 2Mb 10ms DropTail$ns duplex-link $n2 $n3 1.7Mb 20ms DropTailset qn2n3_ $ns link $n2 $n3 queue#設定n2到n3之間的Queue Size為10個封包大小$ns queue-limit $n2 $n3 10#設定節(jié)點的位置,這是給NAM用的$ns duplex-link-op $n0 $n2 orient right-down$ns duplex-link-op $n1 $n2 orient right-up$ns duplex-link-op $n2 $n3 orient right#觀測n2到n3之間queue的變化,這是要給NAM用的$ns duplex-link-op $n2 $n3 queuePos 0.5#建立一條TCP連接set tcp new Agent/TCP$tcp set class_ 2$ns attach-agent $n0 $tcpset sink new Agent/TCPSink$ns attach-agent $n3 $sink$ns connect $tcp $sink#在NAM中,TCP的連線會以藍色表示$tcp set fid_ 1#在TCP連接之上建立FTP應用程序set ftp new Application/FTP$ftp attach-agent $tcp$ftp set type_ FTP#建立一條UDP的連線set udp new Agent/UDP$ns attach-agent $n1 $udpset null new Agent/Null$ns attach-agent $n3 $null$ns connect $udp $null#在NAM中,UDP的連線會以紅色表示$udp set fid_ 2#在UDP連線之上建立CBR應用程序set cbr new Application/Traffic/CBR$cbr attach-agent $udp$cbr set type_ CBR$cbr set packet_size_ 1000$cbr set rate_ 1mb$cbr set random_ false#設定FTP和CBR資料傳送開始和結束時間$ns at 0.1 $cbr start$ns at 1.0 $ftp start$ns at 1.1 record$ns at 4.0 $ftp stop$ns at 4.5 $cbr stop#結束TCP的連線(不一定需要下面的代碼)#把后面的$ns detach-agent $n3 $sink寫成了$ns detach-agent $ns $sink#以至于在程序運行時出現錯誤,查看out.nam可以發(fā)現程序在4.49870588235294時出錯這說明這個腳本在這個時間點之前都是正確運行的,這個腳本是在運行中出現了錯誤。那么與這個時間點很近的地方可能就是問題出現的地方。腳本中哪里與時間有關呢?一個是開始運行時,一個就是結束運行時。#下次遇見這個問題要從文件的執(zhí)行去查找錯誤#在出錯輸出中,有$node detach $agent $nullAgent_這個提示,這時就在這里找原因#查找這種問題時要按照程序的執(zhí)行順序來找原因#腳本從第一行按順序開始執(zhí)行前面的腳本都是對NS模擬環(huán)境的配置,環(huán)境配置好后,最后一行的代碼才是運行這個模擬。,先不會執(zhí)行proc函數,到調用時執(zhí)行函數#運行時的出錯消息為#ns: _o3 detach-agent _o10 _o82 ; _o3 detach-agent _o3 _o84:# (_o3 cmd line 1)# invoked from within#_o3 cmd detach _o84 _o6# invoked from within#catch $self cmd $args ret# invoked from within#if catch $self cmd $args ret #set cls $self info class#global errorInfo#set savedInfo $errorInfo#error error when calling class $cls: $args $.# (procedure _o3 line 2)# (SplitObject unknown line 2)# invoked from within#$node detach $agent $nullAgent_從這個出錯信息中可以知道,錯誤出在detach的地方,還有agent與nullAgent的出現。就在腳本中找這些地方看哪里出錯了吧。# (procedure _o3 line 20)# (Simulator detach-agent line 20)# invoked from within#_o3 detach-agent _o3 _o84#仔細讀出錯提示,耐心找問題出在哪里。$ns at 4.5 $ns detach-agent $n0 $tcp ; $ns detach-agent $ns這里誤把$n3寫成了$ns。這個錯誤太難找了。以往出錯時都會給出在TCL腳本的那一行出了錯誤,這里卻沒有說明。以至于我總想找一個調試工具可以把這個腳本什么地方出錯找出來,浪費了大量時間。而且在這么長的腳本中,用UltraEdit編輯器根本沒有語法提示,任何地方都可能出錯,找到這個錯誤我的第一想法就是對照標準程序一行一行看哪里出了問題。找出問題才會積累經驗。 $sink#在模擬環(huán)境中,5秒后去調用finish函數來結束模擬#在模擬環(huán)境中的5秒并不一定等于實際模擬的時間$ns at 5.0 finish#執(zhí)行模擬$ns run3總結目前還沒有找到好的調試工具以及代碼編輯工具。所以只好用NS2自帶的調試信息仔細尋找。有一定經驗之后就會比較熟悉了。NS2調試
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南京郵電大學《國際投資與信貸》2023-2024學年第二學期期末試卷
- 公共交通線路審批管理制度
- 直埋管施工方案
- 特種陶瓷磨豆?jié){機問卷調查
- 城市路燈井施工方案
- 江西省新八校聯考2024-2025學年高三上學期1月期末聯考英語試題【含答案】
- 甘肅省酒泉市2024-2025學年高一(下)開學生物試卷-(含解析)
- 城市公共廣告施工方案
- 電表安裝施工方案
- 反濾土工布施工方案
- 2025年山西同文職業(yè)技術學院單招綜合素質考試題庫帶答案
- 2025年安徽衛(wèi)生健康職業(yè)學院單招職業(yè)技能測試題庫審定版
- 2025年01月中國疾控中心信息中心公開招聘1人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 安徽2025年安徽汽車職業(yè)技術學院教職工校園招聘筆試歷年參考題庫附帶答案詳解
- 中央2025年中國科協所屬單位招聘社會在職人員14人筆試歷年參考題庫附帶答案詳解-1
- 2025年中國移動通信集團貴州限公司招聘高頻重點模擬試卷提升(共500題附帶答案詳解)
- 自控力-電子書
- 2025年江蘇電子信息職業(yè)學院高職單招職業(yè)適應性測試近5年常考版參考題庫含答案解析
- 2025年北京衛(wèi)生職業(yè)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 臨床基于高級健康評估的高血壓Ⅲ級合并腦梗死患者康復個案護理
- 山東黃河河務局公開招考2025高校畢業(yè)生高頻重點提升(共500題)附帶答案詳解
評論
0/150
提交評論