0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

linux下gdb安装与使用简介

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-08-16 09:03 次阅读

linux下 gdb安装与使用简介

gdb简介
GDB,又称GNU调试器,是用来帮助调试我们程序的工具。gdb可以设置断点、查看变量、堆栈空间的值、设置执行条件的值等。

一般来说,GDB主要帮助你完成下面四个方面的功能:

1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。

2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)

3、当程序被停住时,可以检查此时你的程序中所发生的事。

4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。

red hat6.3下安装gdb调试工具

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70

拷贝gdb软件包到用户目录下,切换到用户目录下,安装gdb工具。

[xsw@xsw Packages]$ cp ./gdb-7.2-56.el6.i686.rpm  ~
[xsw@xsw Packages]$ cd ~
[xsw@xsw ~]$ sudo rpm -ivh gdb-7.2-56.el6.i686.rpm 
poYBAGL6P5OALFkRAABVbpCZcKQ793.png

Ubuntu下安装gdb

[wbyq@wbyq ~]$ sudo apt-get install gdb

gdb工具常用命令

参数 功能
r run, 直接调到断点处,没有设置断点的话直接运行程序
b func 设置一个断点breakpoint在函数”func”的最开始
b N 在当前函数的第N行设置断点
d N 删除第N行的断点
info b 显示所有断点
c 继续运行到下一个断点或程序结束
f 运行到当前程序结束
s 单步调试,进入函数
s N 执行接下来的N行程序
n 单步调试,不进入函数
p data 输出变量data的值
bt 查看调用的堆栈
l 一次列出10行源码(从mian.c开始)
l func 列出函数func的10行源码
condition 设置条件断点,condition 1 i=5,设置断点1的条件断点为i=5
q 退出gdb

示例

#include 
int main()
{
	int a;
	int *p=&a;
	printf("请输入val:\n");
	scanf("%d",&a);
	int i=0;
	for(i=0;i<5;i++)
	{
		*p+=i;	
	}
	printf("a=%d\n",*p);	
}

调试步骤
1.编译程序,使用gdb调试时需加上-g,进入调试模式。

[xsw@xsw cc]$ gcc main.c -g
[xsw@xsw cc]$ gdb ./a.out
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-56.el6)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-redhat-linux-gnu".
For bug reporting instructions, please see:
...
Reading symbols from /home/xsw/xsw_work/cc/a.out...done.
(gdb) 

2.列出源码

(gdb) l
1	#include 
2	int main()
3	{
4		int a;
5		int *p=&a;
6		printf("请输入val:\n");
7		scanf("%d",&a);
8		int i=0;
9		for(i=0;i<5;i++)
10		{
(gdb)

3.设置断点,开始运行

(gdb) b 4
Breakpoint 1 at 0x804844d: file main.c, line 4.
(gdb) r
Starting program: /home/xsw/xsw_work/cc/a.out 

Breakpoint 1, main () at main.c:5
5		int *p=&a;
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.80.el6.i686
(gdb) 

4.单步执行

(gdb) s
6		printf("请输入val:\n");
(gdb) s
请输入val:
7		scanf("%d",&a);
(gdb) s
5
8		int i=0;

5.查看变量值

(gdb) p a
$1 = 5
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11236

    浏览量

    209024
  • 调试器
    +关注

    关注

    1

    文章

    300

    浏览量

    23700
  • gdb
    gdb
    +关注

    关注

    0

    文章

    60

    浏览量

    13283
收藏 人收藏

    评论

    相关推荐

    使用GDB调试Linux应用程序

    本篇讲解使用GDB调试Linux应用程序,以下以 `hellowld.c` 为例介绍 GDB 的调试入门。
    发表于 06-27 15:48 452次阅读

    linuxGDB教程

    linuxGDB教程
    发表于 08-20 13:39

    嵌入式arm linux环境中gdb+gdbserver的安装

    $ make(4)安装 $ make install编译结果在/usr/local/arm/3.3.2/bin目录下,arm-linux-gdb既是GDB工具。三、编译
    发表于 11-21 11:16

    linux 3 - gdb安装和使用介绍

    .iso的安装包里找到和gdb相关的rpm包 2.我们可以看到以上的三个包 接下来就是将这三个包挂载到linux 系统, 当然你也可以使用一些工具如loadCRT等,实现wi
    发表于 07-03 13:27

    DM8168 gdb调试需要单独再安装

    我想在DVRRDK 4.0 gdb调试,是用arm-arago-linux-gnueabi-贬意工具链自带的gdb,还是需要单独再安装
    发表于 02-21 06:06

    如何搭建嵌入式LinuxGDB调试环境

    文章目录介绍GDB简介交叉编译器的gdb介绍在学习单片机的时候我们可以通过集成式IDE 来进行调试,比如MDK、IAR 等。在嵌入式linux 领域是否也可以进行调试呢?答案肯定是可以
    发表于 11-05 06:03

    ubuntuGDB调试GDB简介

    调试与图像编程ubuntuGDB调试Opencv3.x的基本应用ubuntuGDB调试GDB简介
    发表于 12-21 08:20

    LinuxQt的安装

    LinuxQt的安装
    发表于 11-09 17:14 5次下载

    Embeded linux之Qt gdb

    Embeded linux之Qt gdb
    发表于 05-15 13:52 1308次阅读
    Embeded <b class='flag-5'>linux</b>之Qt <b class='flag-5'>gdb</b>

    嵌入式LinuxGDB调试环境建立

    的是gdb-5.2.1.tar.gz。假定在debug编译gdb套件,你前面已经设定了TARGET,PREFIX参数。其中TARGET是你的目标板,我的是arm-linux,PREF
    发表于 04-02 14:33 514次阅读

    实例演示GDB的使用

    GDB简介 GDB(GNU Debugger)是一个强大的命令行调试工具。一般的,在Windows进行开发,很少操控命令行调试,调试器大多与编译器都集成在IDE里了。 当然,在Win
    的头像 发表于 10-19 09:58 2666次阅读
    实例演示<b class='flag-5'>GDB</b>的使用

    嵌入式Linux GDB调试环境搭建与使用

    这里写目录标题简介在Ubuntu简单体验GDB嵌入式GDB移植GDB 常用命令参考网络通信设置注意事项
    发表于 11-01 17:59 8次下载
    嵌入式<b class='flag-5'>Linux</b> <b class='flag-5'>GDB</b>调试环境搭建与使用

    Linux嵌入式 gdb VSCode图形化调试教程

    文章目录介绍GDB简介交叉编译器的gdb介绍在学习单片机的时候我们可以通过集成式IDE 来进行调试,比如MDK、IAR 等。在嵌入式linux 领域是否也可以进行调试呢?答案肯定是可以
    发表于 11-02 12:21 15次下载
    <b class='flag-5'>Linux</b>嵌入式 <b class='flag-5'>gdb</b> VSCode图形化调试教程

    嵌入式Linux GDB是什么

    函数、设置断点、查看变量等等,它是 UNIX/LINUX 操作系统强大的程序调试工具。 gdb 支持多种语言
    的头像 发表于 07-27 16:29 727次阅读
    嵌入式<b class='flag-5'>Linux</b> <b class='flag-5'>GDB</b>是什么

    如何使用linuxgdb来调试python程序

    如何使用linuxgdb来调试python程序  在Linux,可以使用GDB(GNU调试器
    的头像 发表于 01-31 10:41 2454次阅读