GDB


GDB是强大的UNIX下的程序调试工具。要支持gdb调试信息,gcc编译时要加入-g 参数

命令

解释

示例

file <文件名>

加载被调试的可执行程序文件

(gdb) file gdb-sample

l <n1,n2>

显示指定行的文件内容,若无行数,则显示全部

(gdb) l 2,5

r

向前运行被调试的程序,Run的简写

(gdb) r

c

继续执行被调试程序,直至下一个断点或程序结束,Continue的简写

(gdb) c

b <行号>
b <
函数名称>
b *<
函数名称>
b *<
代码地址>

设置断点,Breakpoint的简写
在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。

(gdb) b 8
(gdb) b main
(gdb) b *main
(gdb) b *0x804835c

Info b

显示当前断点信息

(gdb) info b

enable b<n>

使能指定断点

(gdb) enable b 1

disable b<n>

禁止指定断点

(gdb) disable b 1

Clear <n>

清除指定断点

(gdb) clear 1

d [编号]

删除指定编号的某个断点,Delete breakpoint的简写

(gdb) d

S

n

s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数
n:
执行一行源程序代码,此行代码中的函数调用也一并执行

这两个命令必须在有源代码调试信息的情况下才可以使用(-g

(gdb) s
(gdb) n

si, ni

si命令类似于s命令,ni命令类似于n命令。

(si/ni)所针对的是汇编指令,s/n针对的是源代码。

(gdb) si
(gdb) ni

p <变量名称>

显示指定变量的值,Print的简写

(gdb) p ‘file.c‘::sum::i

(gdb) p *array@lenth

x /nfu <address>

显示指定内存值,n长度,f格式(s字符i指令)u字节数(b,h,w,g)1,2,4,8

(gdb) x /3uh 0x520

watch <condition>

设置观察点

(gdb) watch i==3

set <expr>

修改变量的值,还可以修改当前运行指针set $PC=0x520

(gdb) set i=1

jump <location>

跳转执行

(gdb) jump 21

signal <signum>

信号

(gdb) signal 2

return <value>

强制调用函数返回

(gdb) return 2

display ...


设置程序中断后欲显示的数据及其格式,display的简写
例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令“display /i $pc”
其中 $pc 代表当前汇编指令,/i 表示以十六进行显示。当需要关心汇编代码时,此命令相当有用。

(gdb) display /i $pc


undisplay <编号>

取消先前的display设置

(gdb) undisplay 1

i

显示信息,Info的简写

(gdb) i r

q

Quit的简写,退出GDB调试环境。

(gdb) q

help [命令名称]

GDB帮助命令,提供对GDB名种命令的解释说明。

(gdb) help display


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。