微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 如何在VIM中对嵌入式软件进行调试

如何在VIM中对嵌入式软件进行调试

时间:06-30 来源:互联网 点击:

入命令“file testem”后,会在VIM中的另一个窗口出现以下类似的调试信息:

GNU gdb 6.8

Copyright (C) 2008 Free Software Foundation, Inc.

……

This GDB was configured as host=i686pclinuxgnu target=armlinux.

(gdb) file testem

Reading symbols from /home/popeye/test/testem…done.

(gdb)

可以发现,在VIM中已经成功调用交叉调试器armlinuxgdb了。以后的调试命令,都是通过先按下空格键,调出命令窗口,输入命令,回车后传递给调试器。

按下空格,在命令窗口输入命令,连接嵌入式目标板端:

target remote 222.31.51.180:1234

此时,VIM中的调试信息窗口出现信息:

(gdb) target remote 222.31.51.180:1234

Remote debugging using 222.31.51.180:1234

[New Thread 801]

0x40000dd0 in ?? () from /lib/ldlinux.so.2

(gdb)

而在嵌入式端出现提示信息:

ProcESS testem created; pid = 801

Listening on port 1234

Remote debugging from host 222.31.51.147

至此,PC交叉调试器与嵌入式软件的连接完成,现在可以在VIM中对程序运行进行例如断点一类的设置动作;而嵌入式软件的输入输出,需要在嵌入式端来完成。这里先通过命令对代码设置断点,然后用命令continue继续程序运行(注意,这里不用run开始,因为当调试器与嵌入式端连接完成时,被调试的嵌入式软件已经开始运行),用命令next对程序实现步进调试。调试过程中的VIM如图3所示。

图3 正在进行交叉调试的VIM

图中测试代码要实现的是让用户输入5个数,然后经过排序后输出。对应的输入输出在嵌入式端体现出来。对应图3,此时在嵌入式端需要进行输入动作:

Listening on port 1234

Remote debugging from host 222.31.51.147

Enter 10 numbers:

a[0]=25

a[1]=56

a[2]=……

从图3中可以直观地看清断点设置在哪里,程序现在步进到哪里。当程序第一次运行到图3中的17行时,按下F8键,开启变量值观测窗口,然后先后执行3个命令“cr i”、“cr j”、“cr a[i]”,这样,就可以在变量观测窗口实时地监测变量的数值了,如图4所示。

图4 带实时变量值监测窗口的VIM

这种调试方式提供对gdb所有命令功能的支持,而且当发现bug时,可以通过q命令终止调试,然后按F9跳出调试模式,就可以继续对源代码进行修改。

至于在这之前的嵌入式软件在本地PC机上的调试,其过程比起调试运行在嵌入式设备上的软件来讲,只少了个远程连接的过程,其余调试过程都一样。至此,实现了在VIM中对嵌入式软件的调试。

3 结语

嵌入式Linux系统的广泛应用,对嵌入式软件开发和调试环境的效率提出了更高的要求。GNU所提供的支持交叉编译与调试的工具链是一个很好的选择,尤其是其中的gdb调试工具完全满足嵌入式软件“交叉编译”的这种特殊需要;而且,功能强大的VIM编辑器又可实现对gdb调试器的整合,从而在VIM中实现了对嵌入式软件的调试功能。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top