gdb入门

下面是我自己写的一个测试用例 a.c

#include<stdio.h>
int add(int a,int b){
    return a+b;
}
int main(){
    int n=add(5,10);
    printf("n is %d
",n);
    n=n*n;
    printf("n is %d
",n);
    n=add(10,10);
    printf("n is %d
",n);
return 0;}

gdb调试过程
gcc -g a.c -o result //如果想使用gdb调试,那么必须加入-g选项
gdb result 进入gdb调试
l (字母l)显示源码,如果没显示完,按回车继续显示剩下的
b 7 在第七行设置断点
r 运行程序,会在断点那里停下来
p n 显示变量n的值
n 执行下一行
b 9 在第九行再次创建断点,9也可以改为函数名main
condition 2 n==255 检测n的值为255时暂停运行
c 从断点处继续运行
cl 9 清除第九行断点
s 单步调试,执行到下一断点

高级命令
高级命令

gdb还有很多高级用法,如查看堆栈列表,分割窗口等,这里就不一一测试了。
查询运行信息

where/bt:查看当前运行的堆栈列表
up/down:改变堆栈显示的深度
set args:参数:指定运行时的参数
show args:查看设置好的参数
info program: 来查看程序的是否在运行,进程号,被暂停的原因。

分割窗口

layout:用于分割窗口,可以一边查看代码,一边测试
layout src:显示源代码窗口
layout asm:显示反汇编窗口
layout regs:显示源代码/反汇编和CPU寄存器窗口
layout split:显示源代码和反汇编窗口
Ctrl + L:刷新窗口
原文地址:https://www.cnblogs.com/biaopei/p/7730657.html