第21章 Linux设备驱动的调试之GDB调试器的用法

本章知识点

        为了方便进行Linux设备驱动的开发和调试,建立良好的开发环境很重要,还要使用必要的工具软件以及掌握常用的调试技巧等。

1、Linux下调试器GDB的基本用法和技巧。

2、Linux内核的调试方法。

3、Linux内核调试用的printk()、BUG_ON()、WARN_ON()、/proc、Oops、strace、KGDB,以及使用仿真器进行调试的方法。

4、Linux应用程序的调试方法,驱动工程师需要编写用户空间的应用程序以对自身编写的驱动进行验证和测试,因此,掌握应用程序调试方法对驱动工程师来说也是必需的。

5、Linux常用的一些稳定性、性能分析和调优工具

21.1 GDB调试器的用法

21.1.1 GDB的基本用法

    GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要完成下面4个方面的功能。

启动程序,可以按照工程师自定义的要求运行程序。

让被调试的程序在工程师指定的断点处停住,断点可以是条件表达式。

当程序被停住时,可以检查此时程序中所发生的事,并追踪上文。

动态地改变程序的执行环境。

不管是调试Linux内核空间的驱动还是调试用户空间的应用程序,都必须掌握GDB的用法。而且,在调试内核和调试应用程序时使用的GDB命令是完全相同的,以代码清单21.1的应用程序为例演示GDB调试器的用法。

代码清单21.1 GDB调试器用法的演示程序(gdb_example.c)

#include <stdio.h>

int add(int a, int b)
{
return (a + b);
}

int main(void)
{
int sum[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int i;

int array1[10] = {48, 56, 77, 33, 33, 11, 226, 544, 78, 90 };
int array2[10] = {85, 99, 66, 199, 393, 11, 1, 2, 3, 4};

for (i = 0; i < 10; i++)
{
sum[i] = add(array1[i], array2[i]);
printf("sum[%d] = %d\n", i, sum[i]);
}
 
return 0;
}

使用命令gcc -g gdb_example.c -o gdb_example编译上述程序,得到包含调试信息的二进制文件gdb_example,执行gdb gdb_example命令进入调试状态,如下所示:


1.list命令

在GDB中运行list命令(缩写l)可以列出代码,list的具体形式如下。

list<linenum>,显示程序第linenum行周围的源程序,如下所示:


list <function>,显示函数名为function的函数的源程序,如下所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值