本文主要是介绍(转)使用GDB调试NS2程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
gdb调试工具类似于vc中的debug工具。目前有命令行的和窗口界面的。窗口界面是DDD。我只用了命令行的。
用gdb调试ns2,要注意几点:
1,安装gdb,下载gdb包,安装了就是了。
2,改写Makefile,使之称为debug版本,具体做法:
在代码里面添加调试信息:修改Makefile(没有任何后缀的)将里面
CCOPT
STATIC
LDFLAGS
LDOUT
改变为:
CCOPT
LDFLAGS
LDOUT
修改的东西是粉红色字体所示
然后重新编译
注意:以下步骤一个都不能少
Make clean
Make depend
Make
3,调试:
建议把我们的测试脚本写在ns-allinone-2.**/ns-2.XX/mytclscript/下面
当调试时,首先进入ns-2.XX文件夹
然后 [tengda@localhost ns-2.31]$ gdb ns
之后会出现
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".
(gdb)
然后在该平台上运行我们的脚本,可以用cd 命令进入我们脚本所在文件夹。运行我们的脚本:
(gdb) run mbs.tcl
这样就可以进行调试了。具体调试过程与命令,我转载如下:
============================================
GDB(GNU 项目调试器)可以让您了解程序在执行时“内部” 究竟在干些什么,以及在程序发生崩溃的瞬间正在做什么。
GDB 做以下 4 件主要的事情来帮助您捕获程序中的 bug:
- 在程序启动之前指定一些可以影响程序行为的变量或条件
- 在某个指定的地方或条件下暂停程序
- 在程序停止时检查已经发生了什么
- 在程序执行过程中修改程序中的变量或条件,这样就可以体验修复一个 bug 的成果,并继续了解其他 bug
要调试的程序可以是使用 C、C++、Pascal、Objective-C 以及其他很多语言编写的。GDB 的二进制文件名是 gdb。
gdb 中有很多命令。使用 help
命令 | 说明 | 例子 |
---|---|---|
help | 显示命令类别 | help help breakpoints - 显示属于 breakpoints 类别的命令help break |
run | 启动所调试的程序 | ? |
kill | 终止正在调试的程序的执行 | 通常这会在要执行的代码行已经超过了您想要调试的代码时使用。执行 kill |
| | |
cont | 所调试的程序运行到一个断点、异常或单步之后,继续执行 | ? |
info break | 显示当前的断点或观察点 | ? |
break | 在指定的行或函数处设置断点 | break 93 if i=8 |
Step | 单步执行程序,直到它到达一个不同的源代码行。您可以使用 s | ? |
Next | 与 step 命令类似,只是它不会“单步跟踪到”子例程中 | ? |
print | 打印一个变量或表达式的值 | print pointer print *pointer |
delete | 删除某些断点或自动显示表达式 | delete 1 info break |
watch | 为一个表达式设置一个观察点。当表达式的值发生变化时,这个观察点就会暂停程序的执行 | ? |
where | 打印所有堆栈帧的栈信息 | where where all where threadindex - 输出指定线程的堆栈信息 |
attach | 开始查看一个已经运行的进程 | attach - 附加到进程 process_id 上。process_id 可以使用 ps 命令找到 |
info thread | 显示当前正在运行的线程 | ? |
thread apply threadno command | 对一个线程运行 gdb 命令 | thread apply 3 where where |
Thread threadno | 选择一个线程作为当前线程 | ? |
转自: http://blog.sina.com.cn/s/blog_6074447a0100lldd.html
这篇关于(转)使用GDB调试NS2程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!