Linux中使用GDB调试NS2
在使用ns2過程中,避免不了要修改或者添加一些模塊,對C++代碼進行改動。編寫好自己的功能模塊以后,進行編譯執行。但通常不會這么容易通過,經常會出現編譯可以通過,但執行是會出錯。比較常見的是“段錯誤”,因指針內容為空。這個時候,需要用調試器對源代碼進行調試,來精確定位錯誤發生在哪里。下面記錄一些我比較常用的調試功能,GDB在linux中常用的調試器,功能比較全,我用到的也不多。以后會繼續更新。
首先要讓我們的ns2支持gdb的調試,需要對makefile進行修改。(以ns2.29為例)加上-g3選項。
.cc.o:@rm -f $@$(CPP) -g3 -c $(CFLAGS) $(INCLUDES) -o $@ $*.cc .c.o:@rm -f $@$(CC) -g3 -c $(CFLAGS) $(INCLUDES) -o $@ $*.c修改完上面的內容后,重新編譯。然后可以在任意目錄下執行:gdb ns。此時就可以進行調試了,介紹幾個我常用的命令。
(gdb) r test.tcl? //執行指定的test.tcl文件
(gdb) b udp.cc:55? //在udp.cc文件的第55行打斷點
(gdb) c //執行到斷點處,繼續往下執行
(gdb) bt //查看調用棧。覺得這個挺有用,可以查看整個仿真過程的調用過程,對理解仿真步驟和執行過程很有幫助
(gdb) p node //查看變量node的值,當執行到斷點時,可以查看變量的值是否是自己需要的值
我在使用過程中,這幾個命令結合著使用就基本能定位自己的代碼哪里有問題了。但這并沒有結束,因為偶爾會出現一些錯誤,提示會告訴你跟系統中的某些頭文件有關,這個時候就比較困難了。暫時這些問題只能解決到此,相信隨著學習的進一步深入,能解決的問題也會越來越多。關于gdb的調試,也會繼續更新。(雖然博客更新的頻率比較低)
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
轉載于:https://www.cnblogs.com/gxwang/archive/2013/06/01/4940873.html
總結
以上是生活随笔為你收集整理的Linux中使用GDB调试NS2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mat转QImage
- 下一篇: linux 其他常用命令