【linux浅谈017】gbd调试常用指令

什么是gdb调试

GDB(全称:GNU Debugger)是GNU工程为GNU操作系统开发的调试器。它可以用于调试C、C++、Objective-C、Pascal、Ada等语言编写的程序。

GDB的使用条件

程序要用GDB调试,需要添加调试信息。

gcc *.c -o app -g[-g用于添加调试信息]

1. 启动gdb

gdb + 【需要调试的程序】
start – 只执行一步
n – next
s – step(单步) – 可以进入到函数体内部
c - continue – 直接停在断点的位置

2. 查看代码:

l – list(默认10行)
l 10(函数名)
l filename:行号(函数名)

3. 设置断点:

设置当前文件断点:
b – break
b 10(函数名)
b fileName:行号(函数名)
设置条件断点:
b 10 if value==19
删除断点:
delete – del - d
d 断点的编号

4. 查看设置的断点

获取编号: info – i
info b
num:几号断点
type:什么了类型的断点
enb:当前断点状态

5. 开始 执行gdb调试

执行一步操作: s – step(单步) – 可以进入到函数体内部
继续执行:n – next
执行多步, 直接停在断点处:c - continue – 直接停在断点的位置

6. 单步调试

进入函数体内部: s
从函数体内部跳出: finish(想要停止执行,应该先去除断点)
不进入函数体内部:n
退出当前循环: u

7. 查看变量的值:

p – print

8. 查看变量的类型:

ptype 变量名

9. 设置变量的值:

set var 变量名 = 赋值

10. 设置追踪变量

display
取消追踪变量
undisplay 编号
获取编号: info display

11. 退出gdb调试

quit

12.常用gdb指令

file				装入想要调试的可执行文件
kill				终止正在进行的调试程序
list/l				列出产生执行文件的源代码的一部分
next/n				执行一行源代码但不进入函数内部
step/s				执行一行源代码并可以进入函数内部
run/r				执行当前被调试的程序
c					继续运行程序
quit/q				终止gdb
watch				使你能监视一个变量的值而不管它何时被改变
backtrack			栈跟踪,查看代码被谁调用
print/p				查看变量的值
make				不用退出gdb,就可以重新生成可执行文件
shell				不用退出gdb,就可以使用shell命令
whatis				显示变量或者函数类型
break/b				设置断点
info/i break/b		显示当前断点信息,包含到达断点处的次数
info/i files		显示被调试文件的详细信息
info/i func			显示所有函数名称
info/i local		显示当前的函数的局部变量
info/i prog			显示被调试程序的执行状态
delete/del [n]		删除第n个断点
disable [n]			关闭第n个断点
enable [n]			开启第n个断点
ptype				显示结构定义
set variable		设置变量的值
call name(args)		调用并执行为name,参数为args的函数
Finish				终止当前函数并输出返回值
return value		停止当前函数并返回value给调用者

你可能感兴趣的:(Linux浅谈,Linux编程,linux,ubuntu,centos,c++,c语言)