Linux开发工具_4_gdb入门(上)

Linux开发工具

--gdb入门()

一、概述

gdbGNUdebugger的缩写,是编程调试工具。



二、功能

1、启动程序,可以按照用户自定义的要求随心所欲的运行程序。

2、可让被调试的程序在用户所指定的断点处停住(断点可以是条件表达式)

3、当程序停住时,可以检查此时程序中所发生的事。

4、动态改变程序的执行环境。



示例:

gcc -Wall -g simple.c -o simple #一定要记得加上-g选项,以便生成调试信息

gdb simple #启动gdb

list(l) #查看程序的十行代码

break(b) n #在第n行设置断点

info break(i b) #查看断点设置信息

break function (b function) #在函数的入口处设置断点

run(r) #启动程序,在断点处暂停

step(s) #单步跟踪

print i(p i) #打印i当前值

until #跳出循环

continue(c) #继续运行,直到下一个断点,如果一直运行到程序结束,则会打印程序结束信息

Enter(回车)#表示使用上一个命令

finish #退出整个函数,此时会打印函数的返回值

delete n #删除断点n

quit(q) #退出gdb调试





三、运行程序

1run(r) #运行程序,直到下一个断点或程序结束

2run arg1 arg2 … #运行程序并加上参数,如:r a b c d ...



四、查看源码

list(l)-查看最近10行源码

list fun -查看fun函数源码

list file:fun –查看file文件中的fun函数源码,如:lsearch.c:seq_search #如果只有一个文件包含有seq_search函数,则不必加”search.c:”

list 2,10 –查看从第2行到第10行源代码

list ,15 –查看最多到第15行的源代码



五、设置断点与观察点

break 行号

break 函数名称

break file:行号    #b search.c:4

break file:fun

break if <condition> -条件成立时程序停住。

info break(i b) –查看断点 #breakif i = 10

watch expr –一旦expr值发生改变,程序就停住。【设置观察点】

e.g. watchi #一旦i值发生改变,则程序暂停

delete n(d n) –删除断点n #d 1 d 1 2 3



六、单步调试

continue(c)-运行至下一个断点

step(s)-单步跟踪,进入函数内部,类似于VC中的step in【但是不会进入没有提供源代码的函数】

next(n)-单步跟踪,不进入函数内部,类似于VC中的step out

finish-运行程序,直到当前函数完成返回。并打印函数返回时的堆栈地址和返回值及参数值等信息。但是不会跳出main函数。

until–当厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体。如果一次没有跳出,则执行下一次



七、gdb常用命令总结

命令

作用

run(r)

运行,启动程序

list(l)

列出10行源程序

break(b)

设置断点

info break(i b)

打印断点详细信息

continue(c)

继续运行程序,直到下一个断点

watch

设置观察点

step(s)

单步跟踪,类似于VC中的step in

next(n)

单步跟踪,类似于VC中的step out

finish

运行程序,直到当前函数返回,返回函数

until(u)

跳出循环(有时需要两次)

print(p)

查看运行时变量及表达式



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