您的位置:首页 > 其它

GDB 基本命令

2017-11-13 21:59 176 查看
什么是GDB ?为什么需要GDB?没有GDB行不行?有了GDB有哪些好处?

GDB是GNU开源公司开发的一个强大的程序调试工具。

如果在Linux下运行程序,GDB这个工具会有比VC,BCB更加强大的功能。

GDB主要作用:(就是帮助我们自动完成设定好的操作)

① :启动程序,可以按照自定义的要求运行程序

② :可以让被调试的程序在你指定的断点处停住

③ :当停住时,可以查看程序(如变量的值)

④ :动态的改变程序的运行环境

GDB指令:(在linux下编译生成可执行文件)

gcc –g test.c -o test

启动GDB:gdb ./ test

运行程序:run

查看代码:l (list)

格式:list (默认显示10行,可重复执行显示全部代码)

set listsize (设置显示行数,如set listsize 20)

设置断点:break (breakpoint)

格式:break [function]或break [标号]

break filename :linenum (在源文件的第linennum行停住)

break (若没有参数则停在下一条指令处)

break [function] 或[标号] if [condition](在条件成立时才停止程序)

break 20 if i==3

设置观察点:watch (watchpoint)

观察点一般观察某个表达式的值是否发生变化,如果有变化,马上停住程序

格式:watch [变量]或[表达式](为变量设一个观察点,当这变量一有变化就停止运行)

rwatch [变量]或[表达式] (当变量被读时,停止)

awatch [变量]或[表达式] (当变量被读或写时,停止);

查看断点:info break

查看观察点:info watch

继续运行:finish

继续运行:continue (继续执行直到下一个断点,若没遇到断点就运行到结束)

finish和continue 的区别

①、finish:运行程序,直到当前函数完成返回。并打印函数返回时的堆栈地址和返回值及参数值等信息

②、continue [ignore-count] c [ignore-count] fg [ignore-count]

恢复程序运行,直到程序结束,或是下一个断点到来。ignore-count表示忽略其后的断点次数。continue,c,fg三个命令都是一样的意思。

单步执行:step

单步执行:next

step与next的区别

step:一行一行执行,遇到函数时,调到函数内运行

next:一行一行执行,遇到函数时,调过函数运行,不会进入函数。

删除断点:delete、clear、

格式:delete [标号]

clear [function]

clear [filename:linenum]

忽略断点:disable (GDB不会删除断点,当你又需要时,enable就可以)

格式:disable [标号]

退出GDB:quit

标号是info的编号
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gdb 命令