GDB调试

这个是我看b站视频的做的笔记,大家也可以去看视频。C语言gdb调试之精髓(常用命令、多进程、多线程、程序日志)_哔哩哔哩_bilibili

调试命令建议显示程序代码的行数,可以参考csdn上的其他文章。

一、介绍

GDB 全称“GNU symbolic debugger”,从名称上不难看出,它诞生于 GNU 计划(同时诞生的还有 GCC、Emacs 等),是 Linux 下常用的程序调试器。

二、安装

yum -y install gdb

安装需要服务器接入互联网。

三、调试准备

用gcc编译源程序的时候,编译后的可执行文件不会包含源程序代码,如果您打算编译后的程序可以被调试,编译的时候要加-g的参数,例如要编译test.c文件:

gcc -g -o test test.c

在命令提示符下输入gdb test就可以调试test程序了。

gdb test

 

四、设置主程序的参数

1.set args

设置主程序的参数,例如:

运行程序

./test arg1 arg2

那么设置参数的方法是:

gdb test
set args arg1 arg2

另外注意,在设置参数时,如果输入不正常参数,可能引发错误。

例如:

set args aaa bbb.c

你的想法是向程序的参数输入一个“aaa bbb.c”的字符串值。结果由于该字符串中间有个空格,导致程序会有两个参数,一个是aaa,另一个是bbb.c。

这种情况需要在该字符串加双引号,如下:

set args "aaa bbb.c"

2.break 命令缩写b

设置断点

例如:

b 20

将会在第20行设置断点,可以设置多个断点。

3.run 命令缩写r

开始运行程序,程序运行到断点的位置会停下来,如果没有遇到断点,程序会一直运行下去。

r

4.next 命令缩写n

执行当前语句,如果该语句为函数调用,不会进入函数内部执行。

5.step 命令缩写s

执行当前行语句,如果该语句为函数调用,则进入函数执行其中的第一条语句。 


注意了,如果函数是库函数或第三方提供的函数,用s也是进不去的,因为没有源代码,如果是您自定义的函数,只要有源码就可以进去。 
 

6.print 命令缩写p

显示变量值,例如:

p value0

上面的命令会查看当前value0的值是多少。另外要注意的是,p后面也可以加表达式,例如:

p value+1000
p strcpy(name,"Simon")

strcpy函数是一个拷贝字符串的函数,函数返回一个指向最终的目标字符串的指针。

因此会显示Simon。

7.continue 命令缩写c

继续运行程序,直到运行到下一个断点。

8.set var name = value

设置变量的值,假设程序有两个变量: int value0; char name[100];

set val value0=10
set var name=cdz

第一行将value0的值设置为10

第二行set var name="西施”把name的值设置为"cdz",注意,没有动用strcpy函数。

9.quit 命令缩写q

退出gdb环境。

你可能感兴趣的:(linux,运维,服务器)