首页 理论教育 嵌入式Linux编程开发实例

嵌入式Linux编程开发实例

更新时间:2025-01-18 工作计划 版权反馈
【摘要】:程序调试1)进入GDB。图5-7 例5-4运行的结果图5-8 GDB命令运行结果可以看出,在GDB的启动画面中指出了GDB的版本号和使用的库文件等信息。图5-9 查看载入文件的结果图5-10 查看断点的结果需要注意的是,在GDB中利用行号设置断点是指代码在运行到对应行之前暂停。退出GDB只需使用指令“q”即可,如下所示。到此为止,使用GDB的整体过程已经结束了。

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

【例5-4】GDB的使用。

创建文件

1)在Vim中创建一个新工程文件,命名为“example5_4.c”。

2)在“example5_4.c”中创建如下代码。

978-7-111-33316-6-Chapter05-43.jpg

978-7-111-33316-6-Chapter05-44.jpg

编译文件

在终端输入以下命令,编译程序

978-7-111-33316-6-Chapter05-45.jpg

如果程序正常编译通过,输入以下命令运行该程序,如图5-7所示。

如果程序有错,输入下列命令进行编译。

978-7-111-33316-6-Chapter05-46.jpg

此时,程序可以正常编译通过,输出文件是example5_4.debug。该文件中加入了文件调试所需要的信息。

程序调试

1)进入GDB。

在终端输入“GDB”命令,进入到GDB。

978-7-111-33316-6-Chapter05-47.jpg

GDB命令运行结果如图5-8所示。

978-7-111-33316-6-Chapter05-48.jpg

图5-7 例5-4运行的结果

978-7-111-33316-6-Chapter05-49.jpg

图5-8 GDB命令运行结果

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

2)查看文件。

在GDB中键入‘l’(list)就可以查看所载入的文件,如图5-9所示。

可以看出,GDB明确地给出了对应的行号,这样可以大大地方便代码的定位。

在一般情况下,源代码中的行号与用户书写程序中的行号是一致的,但有时由于用户的某些编译选项会导致行号不一致的情况,因此,要查看在GDB中的行号。

3)设置断点。

设置断点可以使程序到一定位置暂停它的运行。程序员在该位置处可以方便地查看变量的值和堆栈情况等,从而找出代码的问题所在。在GDB中设置断点非常简单,只需要在“b”后加入对应的行号即可(这是最常用的方式,另外还有其他设置断点的方式),其命令如图5-10所示。

978-7-111-33316-6-Chapter05-50.jpg

图5-9 查看载入文件的结果

978-7-111-33316-6-Chapter05-51.jpg

图5-10 查看断点的结果(www.xing528.com)

需要注意的是,在GDB中利用行号设置断点是指代码在运行到对应行之前暂停。

4)查看断点处的情况。

在设置完断点之后,用户可以键入“infob”来查看设置断点的情况。在GDB中可以设置多个断点,结果如图5-11所示。

5)运行代码。

接下来就可以运行代码了。GDB默认从首行开始运行代码,键入“r”(run)即可,在“r”后面加上行号即可从程序中指定行开始运行。

978-7-111-33316-6-Chapter05-52.jpg

运行代码结果如图5-12所示。

978-7-111-33316-6-Chapter05-53.jpg

图5-11 设置断点结果

978-7-111-33316-6-Chapter05-54.jpg

图5-12 运行代码结果

输入“step”命令,程序运行一步,显示结果如图5-13所示。

输入“step”命令,程序运行一步,显示结果如图5-14所示。

978-7-111-33316-6-Chapter05-55.jpg

图5-13 分步运行代码1

978-7-111-33316-6-Chapter05-56.jpg

图5-14 分步运行代码2

输入“step”命令,程序运行一步,显示结果如图5-15所示。

6)查看变量值。

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

978-7-111-33316-6-Chapter05-57.jpg

图5-15 分步运行代码3

978-7-111-33316-6-Chapter05-58.jpg

图5-16 查看变量值

GDB在显示变量值时都会在对应值之前加上“$N”标记,它是当前变量值的引用标记,所以若想再次引用此变量,就可以直接写作“$N”,而无需写冗长的变量名。

7)观察变量。

在某一循环处,程序员往往希望能够观察一个变量的变化情况,这时就可以键入命令watch来观察变量的变化情况。

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

8)退出GDB。

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

978-7-111-33316-6-Chapter05-59.jpg

到此为止,使用GDB的整体过程已经结束了。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈