LINUX调试工具 gdb使用

LINUX调试工具 gdb使用

什么是gdb?

它是一种针对多种语言的Debug工具,包括C和C++
它可以让你在程序的特定位置检查程序正在做什么
像段错误这样的简单错误可以通过gdb工具比较简单的找出来

使用步骤:

1.编译

gcc test.c -o test -g
​
添加一个额外的-g选项,这样可以让程序支持debug,从而我们就可以使用gdb对程序进行调试。

2.使用

1.终端中输入gdb test 进入gdb调试模式 
2.下断点:
break 函数名 如:break main
break test.c 8  在test.c的第8行下断点
3.运行 输入run跑起来程序,下一步:n/next 
4.查看程序中的变量值 print i   display i

注:通过gdb下的help命令,这样就能得到对命令比较完整的描述:如: help file

更详细的使用方法可参考如下指令自行调试:

命令 命令缩写 命令说明
list l 显示多行源代码
break b 设置断点,程序运行到断点的位置会停下来
info i 描述程序的状态
run r 开始运行程序
display disp 跟踪查看某个变量,每次停下来都显示它的值
step s 执行下一条语句,如果该语句为函数调用,则进入函数执行其中的第一条语句
next n 执行下一条语句,如果该语句为函数调用,不会进入函数内部执行(即不会一步步地调试函数内部语句)
print p 打印内部变量值
continue c 继续程序的运行,直到遇到下一个断点
set var name=v 设置变量的值
start st 开始执行程序,在main函数的第一条语句前面停下来
file 装入需要调试的程序
kill k 终止正在调试的程序
watch 监视变量值的变化
backtrace bt 产看函数调用信息(堆栈)
frame f 查看栈帧
quit q 退出GDB环境

有条件的断点

有时我们并不是想要在任何情况下都中断程序,最简单的一个例子,在一个for循环中通过简单的排查,程序仅仅在i >= 100的时候才出现问题,那面当i = 100的时候就不需要中断程序。通过下面的命令就可以实现这样的功能:

(gdb) break p.c:6 if i >= 100

这条命令在文件p.c的第六行上设置了一个断点,触发断点的条件是变量i的值大于等于100

猜你喜欢

转载自blog.csdn.net/aaa2540567665/article/details/127691107