如何在.cc源碼中通過變量向trace文件輸入調試信息

step1:添加trace函數,實現smac類函數的trace輸出功能
---------------------------------------------------
以smac爲例,首先在smac.h中設立trace*型變量tracetarget_,在smac.cc的command()中,與log-target方法建立連接,賦值爲其第二參數,實質是與tcl腳本中指定的.tr腳本建關聯,這需要自己的tcl腳本支持,具體做法是在建立node節點時,添加如下代碼段:
 set mb_node($i) [new Node/MobileNode] 
 $mb_node($i) nodetrace $tracefd
方法modetrace在文件ns-mobilenode.tcl中,實質就是log-target方法,與smac.cc中的command()對應。


step2:設立全局變量smac_global_instance,使得可在其它類函數中調用trace輸出功能。
------------------------------------------------------------------------------
封裝成宏MYTRACE,定義於smac.cc首部。關鍵之處在於全局變量指針需要初始化,若在構造函數中直接賦值爲this則因爲實例太多(按節點數)而重複定義,可在構造函數中按index_號進行選擇性賦值(缺省選擇節點0)


step3:其它類函數調用,如wireless-phy
------------------------------------
存在一個構造函數中無法trace的問題,是否跟建立先後順序有關?此時trace函數還未建立起來?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章