天天看点

《嵌入式 Linux C 语言应用程序设计(修订版)》——2.4 嵌入式Linux调试器GDB的使用

本节书摘来异步社区《嵌入式 linux c 语言应用程序设计(修订版)》一书中的第2章,第2.4节,作者:华清远见嵌入式培训中心,孙琼,更多章节内容可以访问云栖社区“异步社区”公众号查看

嵌入式 linux c 语言应用程序设计(修订版)

在程序编译通过生成可执行文件之后,就进入了程序的调试环节。调试一直来是程序开发中的重中之重,如何使程序员能够迅速找到错误的原因是一款调试器的目标。

gdb是gnu开源组织发布的一个强大的linux下的程序调试工具,它是一种强大的命令行调试工具。

一个出色的调试器需要有以下几项功能。

能够运行程序,设置所有能影响程序运行的参数。

能够让程序让指定的条件下停止。

能够在程序停止时检查所有参数的情况。

能够根据指定条件改变程序的运行。

下面通过一个简单的实例使读者对gdb有一个感性的认识,这里所介绍的指令都是gdb中最为基本也是最为常用的指令,希望读者能够动手操作,掌握gdb的使用方法。 首先,有以下程序段。

[root@localhost gdb]# gdb test

gnu gdb red hat linux (6.3.0.0-1.21rh)

copyright 2004 free software foundation, inc.

gdb is free software, covered by the gnu general public license, and you are

welcome to change it and/or distribute copies of it under certain conditions.

type "show copying" to see the conditions.

there is absolutely no warranty for gdb. type "show warranty" for details.

this gdb was configured as "i386-redhat-linux-gnu"...using host libthread_db library "/lib/libthread_db.so.1".

(gdb)<code>`</code>

可以看出,在gdb的启动画面中指出了gdb的版本号、使用的库文件等信息,接下来就进入了由“(gdb)”开头的命令行界面了。

2.查看文件

在gdb中键入‘l’(list)就可以查看所载入的文件,如下所示:

(gdb) b 6

breakpoint 1 at 0x804846d: file test.c, line 6.<code>`</code>

要注意的是,在gdb中利用行号设置断点是指代码运行到对应行之前暂停,如上例中,代码运行到第5行之前暂停(并没有运行第5行)。

4.查看断点处情况

在设置完断点之后,用户可以键入“info b”来查看设置断点情况,在gdb中可以设置多个断点。

(gdb) r

starting program: /home/yul/book/test

breakpoint 1, add (m=50) at test.c:6

6 for(i=1; i&lt;=m;i++)<code>`</code>

可以看到,程序运行到断点处就停止了。

6.查看变量值

在程序停止运行之后,程序员需要查看断点处的相关变量值。在gdb中只需键入“p+变量值”即可,如下所示:

(gdb) watch n

hardware watchpoint 2: n<code>`</code>

可以看到,gdb在“n”设置了观察点。

注意 在此处必须键入完整的命令“watch”,因为在gdb中有不少以‘w’开头的命令,如“where”、“while”等。

8.单步运行

单步运行是指一次只运行一条语句,这样可以方便程序员来查看程序运行的结果,在此处只需键入“n”(next)即可。

(gdb) c

continuing.

the sum of 1-50 is 1275

program exited with code 031.<code>`</code>

10.退出gdb

退出gdb只需使用指令“q”(quit)即可,如下所示:

继续阅读