Linux开发工具_4_gdb入门(上)
Linux开发工具
--gdb入门(上)
一、概述
gdb是GNUdebugger的缩写,是编程调试工具。
二、功能
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调试
三、运行程序
1、run(r) #运行程序,直到下一个断点或程序结束
2、run 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) |
查看运行时变量及表达式 |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。