??
前面已经有了一篇对gdb经常使用命令的总结。见 http://blog.csdn.net/u011848617/article/details/12838875
这里对眼下学过的gdb命令进行了较完整的整理。
1、使用gdb调试代码,就要在编译时加入-g选项。
2、gdb -q —————— 启动gdb时不输出版权说明
3、gdb打开文件: (1)gdb filename; (2)先输入gdb,然后在gdb命令行输入file filename。
4、gdb选项(gdb中好多命令都有自己的简写字母): 不输入直接回车 ------------ 反复运行上一条命令 q(quit) ------------------- 退出gdb file filename ------------- 打开文件filename l(list) ------------------- 显示10行代码。若再次执行则显示接下来10行代码 list 5,10 ---------------- 显示第5到10行的代码 list test.c:5,10 -------- 显示源文件test.c中第5到10行的代码 list get_sum -------------- 显示get_sum函数周围的代码 list test.c:get_sum ------- 显示源文件test.c中get_sum函数周围的代码 shell XXX ----------------- 执行shell命令XXX search/forward str -------- 从当前行向前查找第一个匹配的字符串str reverse-search str -------- 从当前行向后查找第一个匹配的字符串str r(run) -------------------- 执行程序 help XXX ------------------ 查看命令XXX的用法 help all ------------------ 查看全部命令的用法 whatis 变量或表达式 ------- 显示变量或表达式的数据类型 set variable 变量=值 ------ 给变量赋值 kill ---------------------- 结束当前程序的调试 continue ------------------ 让程序继续执行,直到下一个断点或者执行完为止 n(next) ------------------- 继续运行下一条语句,遇到函数把函数当作一条语句来运行 step ---------------------- 继续运行下一条代码,遇到函数会跟踪进入函数 nexti/stepi --------------- 单步运行一条机器指令 watch 变量名 -------------- 设置变量监測点 bt(backtrace) ------------- 显示程序当前执行位置和对当前位置的栈跟踪 display 变量或表达式 ------ 加入观察点。以后每次执行命令都会显示相应变量或表达式的值 undisplay num ------------- num为设置的display编号,能够用info display获取。不能用变量名
5、设置断点: b(break) 行号 ----------------------- 在第n行设置断点 break fun_name ---------------------- 为函数fun_name设置断点 break 行号或函数名 if 条件 ---------- 程序在执行中。当条件满足时。在某行中断暂停执行 watch 条件表达式 -------------------- 程序执行中,满足条件时暂停执行,不须要写行号 info breakpoints -------------------- 查看当前全部的断点 disable 断点编号 -------------------- 使断点n失效 enable 断点编号 --------------------- 使断点n有效 clear ------------------------------- 删除本行断点(假设存在的话) clear 行号 -------------------------- 删除此行断点 clear 函数名 ------------------------ 删除该函数的断点 delete 断点编号 --------------------- 删除指定编号的断点
6、print命令: print XXX ------------------------------- 打印输出XXX的值 print 变量 = 值 ------------------------- 对变量赋值 print 表达式@要打印值的个数n ------------ 打印以表达式值開始的n个数
7、watch和display设置监測点的差别: watch监測仅仅有当监測的变量值发生变化时才显示变量,并且旧值和新值都会显示。 display监測每一次执行命令都会显示变量的值,仅仅会显示变量的最新值。
再探gdb经常使用命令
标签:源文件 arch 命令 sdn eve 输出 detail str bre
小编还为您整理了以下内容,可能对您也有帮助:
GDB常用命令
1、file
载入调试程序,同时加载符号表
2、core-file
载入core mp程序映像,
gdb命令行参数形式: (-c | -core) core-file
3、symbol-file
从指定文件载入符号表
gdb命令行参数形式: (-s | -se | -symbols) symbol-file
4、directory
添加源文件搜索路径
gdb命令行参数形式: (-d | -directory) source-directory
5、r — run
启动调试程序,可传入参数
6、c — continue
跳过断点继续执行
7、s — step
单步执行,进入子程序内部
8、n — next
单步执行,越过子程序执行
9、b — break
设置断点,使用行号或函数名
10、i — info
显示断点 info breakpoints
11、d — delete
删除断点 delete breakpoints
12、bt — backtrace
打印栈帧
13、p — print
打印变量
/x 按十六进制格式显示变量
/d 按十进制格式显示变量
/u 按十六进制格式显示无符号整型
/o 按八进制格式显示变量
/t 按二进制格式显示变量
/a 按十六进制格式显示变量
/c 按字符格式显示变量
/f 按浮点数格式显示变量
14、l — list
显示程序源码
15、jump
跳转到第n行处开始调试
16、call
调用函数
17、finish
退出当前函数返回到它的调用函数
18、watch
设置观察点,当表达式的值改变时停止运行
19、awatch
设置观察点,当表达式的值被读取或发生改变时停止运行
20、commands
设置当遇到断点n时执行的特定动作命令
gdb调试命令是什么?
命令如下
1、对于在应用程序中加入参数进行调试的方法:
直接用 gdb app -p1 -p2 这样进行调试是不行的。
需要像以下这样使用:
#gdb app
(gdb) r -p1 -p2
或者在运行run命令前使用set args命令:
(gdb) set args p1 p2
可以用show args 命令来查看
2、加入断点:
break <linenumber>
break <funcName>
break +offset
break -offset
(在当前行号的前面或后面的offset行停住。)
break filename:linenum
在源文件filename的linenum行处停住。
break filename:function
在源文件filename的function函数的入口处停住。
gdb:UNIX及UNIX-like下的调试工具。如果在 UNIX平台下做软件,GDB调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。
2009年12月29日,程序调试工具 GDB 7.0.1 发布,新版本修正了7.0版本的一些严重的堆栈溢出bug,这些bug可能导致 GDB 调试进程中断,修正了在 FreeBSD 和 IRⅨ 系统下无法编译的问题,增加了对 Thumb2调试的支持,还有其他一些小bug的修复。
gdb调试命令是什么?
gdb调试命令如下:
1、启动gdb
$gdb
这样可以和gdb进行交互了。
2、启动gdb,并且分屏显示源代码
$gdb -tui
这样,使用了'-tui'选项,启动可以直接将屏幕分成两个部分,上面显示源代码,比用list方便多了。这时候使用上下方向键可以查看源代码,想要命令行使用上下键就用[Ctrl]n和[Ctrl]p。
3、启动gdb调试指定程序app
$gdb app
这样就在启动gdb之后直接载入了app可执行程序,需要注意的是,载入的app程序必须在编译的时候有gdb调试选项,例如'gcc -g app app.c',注意,如果修改了程序的源代码,但是没有编译,那么在gdb中显示的会是改动后的源代码,但是运行的是改动前的程序,这样会导致跟踪错乱的。
4、启动程序之后,再用gdb调试
$gdb <program> <PID>
这里,<program>是程序的可执行文件名,<PID>是要调试程序的PID.如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试他。program应该在PATH环境变量中搜索得到。
5、启动程序之后,再启动gdb调试
$gdb <PID>
这里,程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID,<PID>是要调试程序的PID.这样gdb就附加到程序上了,但是现在还没法查看源代码,用file命令指明可执行文件就可以显示源代码了。
gdb怎么用
GDB调试,建议去下个系统的文档;
GDB调试器
GCC用于编译程序,而Linux的另一个GNU工具gdb则用于调试程序。gdb是一个用来调试C和C++程序的强力调试器,我们能通过它进行一系列调试工作,包括设置断点、观查变量、单步等。
其最常用的命令如下:
file:装入想要调试的可执行文件。
kill:终止正在调试的程序。
list:列表显示源代码。
next:执行一行源代码但不进入函数内部。
step:执行一行源代码而且进入函数内部。
run:执行当前被调试的程序
quit:终止gdb
watch:监视一个变量的值
break:在代码里设置断点,程序执行到这?锸惫移?
make:不退出gdb而重新产生可执行文件
shell:不离开gdb而执行shell
2)从你的描述上看来,你是用单独的gdb.exe调试器,调试的时候不需要运行程序的,编译的时候 只要加上相应的参数(”-g“)产生编译后的可执行文件,
以gcc编译sum.c(加-g选项产生debug信息):
gcc –g –o sum sum.c
在命令行上键入gdb sum并按回车键就可以开始调试sum了,再运行run命令执行sum。