vim min.c
#输入min.c的内容
gcc min.c -o min -g #必须写-g
gdb -q min #调试可执行程序 -q是为了阻止显示版本信息
l # list 显示源代码 一次10行
l # list 显示源代码 接着10行
l # list 显示源代码 接着10行
l 1 #重新显示前10行 1可换成任意合法行号
b 10 #在第10行设置断点
b min #在min函数开始(第一天函数体语句)处设置断点
info b #查看断点信息 会具体显示在哪个文件哪一行
r #run 输入 程序才会执行 并停于断点处
r #程序执行过程中再次输入r会提示是否重新开始执行 而并非continue放行
n #next 执行下一条语句 不进入函数 step over
s #step 执行下一条语句 进入函数 step into
p a1 #print 变量名 显示当前状态下的变量值,此处显示变量a1的值
c #continue 放行 执行到下一个断点处 若无断点则执行到程序结束
q #quit 退出gdb

vim min.c
#输入min.c的内容
gcc min.c -o min -g #必须写-g
gdb -q min #调试可执行程序  -q是为了阻止显示版本信息
l # list 显示源代码 一次10行
l # list 显示源代码 接着10行
l # list 显示源代码 接着10行
l 1 #重新显示前10行  1可换成任意合法行号
b 10 #在第10行设置断点 
b min  #在min函数开始(第一天函数体语句)处设置断点
info b #查看断点信息 会具体显示在哪个文件哪一行
r #run 输入 程序才会执行 并停于断点处  
r #程序执行过程中再次输入r会提示是否重新开始执行 而并非continue放行
n #next 执行下一条语句 不进入函数 step over
s #step 执行下一条语句 进入函数 step into
p a1 #print 变量名 显示当前状态下的变量值,此处显示变量a1的值
c #continue 放行 执行到下一个断点处 若无断点则执行到程序结束
q #quit 退出gdb

例子:

//min.c
#include<stdio.h>
int min(int x,int y);
int min(int x,int y){
if(x<y)
return x;
else
return y;
}
int main(){
int a1,a2,min_int;
printf("请输入第一个整数:");
scanf("%d",&a1);
printf("请输入第二个整数:");
scanf("%d",&a2);
min_int=min(a1,a2);
printf("最小的整数是:%d\n",min_int);
return 0;
}

linux下的GDB调试 详细_gdb调试

linux下的GDB调试 详细_gdb调试_02

linux下的GDB调试 详细_linux_03

linux下的GDB调试 详细_可执行程序_04