1 / 45
文档名称:

gcc和gdb详解.docx

格式:docx   大小:195KB   页数:45页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

gcc和gdb详解.docx

上传人:w447750 2018/5/31 文件大小:195 KB

下载得到文件列表

gcc和gdb详解.docx

相关文档

文档介绍

文档介绍:gdb调试
调试命令:gdb 【可执行文件】
退出gdb:quit(q) (在gdb中大部分命令都可以用缩写表示)
显示源代码:list (l)
查看某行代码:list 【行号n】(缩写l 行号n) 程序会显示n行上下共十行的代码
查看函数代码:list 【函数名】(缩写 l 函数名)
显示当前行后面的代码:list
显示当前行前面的代码:list –
一般是显示当前行的上5行和下5行,或者显示当前行的上2行和下8行,默认共显示10行。也可以自己设置显示的范围。
set listsize <count>: 设置一次显示源代码的行数
show listsize:查看当前listsize的设置。
显示first到last行之间的代码:list <first>,<last>
显示从前行到last行的代码:list ,<last>
向后显示源代码:list +
设置断点:break 【行号n】 (缩写b 行号n)
break 【函数名】(缩写b 函数名)
break if <condition> 条件成立时停止
查看断点:info break (缩写 i b) 断点都有断点号
单步跟踪并进入函数:step (s)
单步跟踪,但不进入函数:next (n)
运行到下一断点:continue (c)
不设置断点,直接运行程序:run (r)
finish:运行程序,知道当前函数完成返回,并打印函数返回时的堆栈地址及参数值等信息
跳出循环: until
查看变量值:print 【变量名】(p 变量名)
delete 【断点号】:删除断点
clear命令:
clear命令是用来清除断点的的命令
clear 要清楚的断点所在的行号
clear命令与delete命令不同,delete命令后跟断点编号,而clear命令后面跟的是断点所在的行号,另外,使用clear命令,gdb会给出提示,而delete命令没有。
enable命令:
enable可以恢复暂时失效的断点
enable 断点标号
要恢复多个断点时,可用空格将断点编号隔开
disable命令:
disable命令可是刚设置的的断点失效,失效后用命令cont继续程序的执行
disable 断点编号
ptype 【变量名】:查看变量类型
print 数组名[标号]:查看数组元素的值
print 【变量1】=n:将变量1的值改为n
print 命令详解:
形式1:print 表达式
表达式中与两种特殊符号要注意,$,$$,用print查看表达式时,表达式的值都会被记录下来,并会以$1,$2,$3等编上号,这样就可以通过print $n,命令查看系统记录的$n的值,而要查看从当前记录的值开始往后推n个的记录值时应该用$$符号,如现在记录到$5,要看看$3,则可用print $$2命令查看。
另外如果$后边不加数字,相当于print当前标号之前的print值,同时,如果$$加不加数字,则表示print当前标号倒数的第二个print记录。
形式2:print 变量=表达式
形式3:打印内存某个部分开始的一块连续空间的内容
Print 开始表达式@要打印内存空间的大小
开始表达式应该是内存中的一个表达式,他的输入结果以数组的形式,其中第0个元素师开始表达式的值,第1个元素是在内存中紧挨着开始表达式的空间中存放的值,以此类推。
display命令:
display用来显示一些表达式的值,使用该命令后,每当程序运行到断点处就会显示该表达式的值,可以用它来观察一些表达式的值,它与print的区别是,display命令每次调试中断程序,挂起指令都要显示变量的值。
形式:display 要显示值的表达式
set 命令:
set除了可以显示数据外,还可以修改变量的值
使用观察窗口
使用观察窗口与在程序的特定位置设置断点实现的功能相似,但使用观察窗口值在表达式为真时中断程序的运行。
watch命令:
使用watch命令设置观察窗口
例如程序段如下:
for(counter=0;counter<30;couter++)
{

}
设置观察窗口
(gdb)watch counter>15
则程序会在表达式counter>15为真时中断程序
搜索源代码
向前搜索:forward-search <regexp>
或search <regexp>
反向搜索:reverse-search <regexp>
其中<regexp>就是正则表达式,也是一个字符串的匹配模式
在输入gdb命令时,直接点击回车,执行上条命令
编译错误:编译程序时没有符合语法规范导致编译错误
运行错误