全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

linux下gdb安装与使用简介

时间:2022-08-16 09:03

人气:

作者:admin

标签: gdb  Linux  调试器 

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

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
审核编辑:汤梓红
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信