GDB调试器及j简单的调试方法

GDB调试器及简单的调试方法

前言

学习GDB之前我们要了解一下什么是GDB,学习GDB对我们程序的调试有什么作用。
GDB 是GNU工程为GNU操作系统开发的调试器,但它的使用不局限于GNU操作系统, GDB可以运行在UNIX、Linux甚至Microsoft Windows。
GDB可以调试C、C++、Objective-C、Pascal、Ada等语言编写的程序;被调试的程序可以跟GDB运行于同一台电脑,也可运行与不同的电脑用
GDB我们可以
设置断点使程序停住
监视或修改程序中变量的值
跟踪代码执行过程

1、GDB的使用

程序要能被调试,必须包含调试信息,因此在编译程序是需要为程序添加调试信息
如:gcc -g -o hello hello.c
编译之后便可以用GDB对程序进行调试。

2、简单程序调试

使用下面的代码实现对一个整型数的反转功能,但是输入100时结果出错,找到问题。

#include<stdio.h>
void x(int a)
{
while (a>10)
{
printf("%d",a%10);
a=a/10;
}
printf("%d\n",a);
}
int main(void)
{
int a;
printf("input a number:\n");
scanf("%d",&a);
printf("After rever:\n");
x(a);
}

(1)由于这是一个简单的程序,我们很容易就可以看出来错误之处在哪里,但是如果我们用GDB来进行调试找到错误之处的话,那么在编译生成可执行程序时,我们需要采用上面的编译方法。
在这里插入图片描述
(2)对生成的可执行程序 rever 进行调试

# gdb rever

在这里插入图片描述
之后就可以使用gdb的各种参数,对程序进行简单的调试,从而找到错误之处。

3、简单命令示

  1. gdb l 显示代码及行号
    在这里插入图片描述

  2. gdb b 行号 通过行号设置断点
    gdb 函数名 通过函数名设置断点
    gdb info b 显示所有断点信息
    在这里插入图片描述

  3. gdb run 执行程序
    gdb c 继续执行
    在这里插入图片描述
    由于之前在程序中以函数x进行了断点,并且在第6行设置断点,因此当程序执行到函数x或者执行到第6行时就会停止,此时输入命令c程序便会继续进行知道有结果。

  4. gdb c 继续执行
    gdb p a 打印a的值
    gdb s 单步执行
    gdb d 断点 删除这个断点
    gdb q 退出gdb

3、core文件

Linux中,程序崩溃时,一般会产生core文件记录进程退出前的状态,调试段错误问题,借助于该文件,可快速定位问题。
可按如下步骤生成和使用core文件

– Step 1: 让系统产生core文件
• ulimit –c num #设定core文件容量(num为数字,为0是不产生core文件)
– Step 2: 运行程序,让程序崩溃,从而生成core文件
– Step 3: gdb配合core文件,定位问题
• gdb 程序名 core文件名 • 比如: gdb segDemo co

总结

gdb可以很好的帮我们对自己的代码进行简单的调试,当代码量很大时,我们肯定不能一条一条的去看自己的代码,此时gdb就可以我们快速的找到错误之处。熟练的掌握gdb一些命令的用法可以让我们事半功倍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值