Linux中使用GDB调试NS2
2013-06-01 08:39
232 查看
在使用ns2过程中,避免不了要修改或者添加一些模块,对C++代码进行改动。编写好自己的功能模块以后,进行编译执行。但通常不会这么容易通过,经常会出现编译可以通过,但执行是会出错。比较常见的是“段错误”,因指针内容为空。这个时候,需要用调试器对源代码进行调试,来精确定位错误发生在哪里。下面记录一些我比较常用的调试功能,GDB在linux中常用的调试器,功能比较全,我用到的也不多。以后会继续更新。
首先要让我们的ns2支持gdb的调试,需要对makefile进行修改。(以ns2.29为例)加上-g3选项。
修改完上面的内容后,重新编译。然后可以在任意目录下执行: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的调试,也会继续更新。(虽然博客更新的频率比较低)
首先要让我们的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的调试,也会继续更新。(虽然博客更新的频率比较低)
相关文章推荐
- Linux中使用GDB调试NS2
- Linux下使用gdb调试C/C++程序
- 使用GDB调试Linux软件
- linux平台学x86汇编(五):使用gdb调试汇编程序
- Linux调试工具GDB使用简易教程
- 使用 GDB 调试 Linux 软件(转)
- Linux下使用GDB调试程序
- Linux GDB程序调试工具使用简介
- Linux下gdb调试工具的使用方法
- Linux下交叉编译gdb,gdbserver+gdb的使用以及通过gdb调试core文件
- GDB使用方法--LINUX下的调试工具
- 在Linux下使用arm-elf-gdb调试lm3s系列
- Linux下编程工具的使用(5) - GDB调试工具(2)
- 使用 GDB 调试 Linux 软件
- linux下如何使用gdb调试
- 使用 GDB 调试 Linux 软件
- Linux中gdb程序调试器的命令使用(包括后台进程和多线程的调试)
- 使用VS+VisualGDB编译调试Linux程序
- [置顶] Linux 使用gdb对c/c++代码进行调试
- 如何在安卓系统上使用arm-linux-gdb调试内核