天天看点

linux下的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      

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调试 详细
linux下的GDB调试 详细
linux下的GDB调试 详细
linux下的GDB调试 详细

继续阅读