VELT-0.1.6开发:在VS2013下用QEMU调试x86 Linux内核

快乐虾

http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651)

欢迎转载,但请保留作者信息



VELT的全称是Visual EmbedLinuxTools,它是一个visual studio插件,用以辅助完成Linux开发。利用这个插件,将可以在visualstudioIDE中进行Linux应用程序的开发(包括编译和调试),也可以进行ubootlinux内核的编译和调试,并根据编译时的错误信息正确定位到源码。目前的版本是0.1.5,仅支持vs2013。此插件可以在百度网盘下载(http://pan.baidu.com/s/1c0lMxdm),安装过程参见《vs2013+velt-0.1.4进行嵌入式开发:插件安装》。下面是它的基本功能:

  1. 支持x86 Linux,海思hi3516/hi3520MinGW这几个平台,提供这几个平台的项目模板。

  2. 完成UBOOT的编译,并根据编译的错误信息自动定位到相应的文件位置。

  3. 完成LINUX内核的编译,并根据编译的错误信息自动定位到相应的文件位置。

  4. 利用串口进行内核的简单调试。

  5. VS下完成Linux内核的配置。

  6. 不使用Makefile进行Linux应用程序的编译。

  7. 使用Makefile进行Linux应用程序的开发。

  8. 使用SSH连接目标机器并用gdb进行应用程序的调试。

  9. 使用Telnet连接目标机器并用gdb进行应用程序的调试。

  10. VS中集成Linux终端(Poderosa),支持SSH/Telnet/Com,在打开终端时自动将VS的变量导出为bash里的变量,如ProjectDir等。

  11. python-2.7.6,且集成了numpy, scipy, matplotlib, cv2, pyqt4python库。可以在PTVS下直接调用进行调试。


接下来使用QEMU来调试x86内核。它的基本原理是使用QEMU虚拟一个x86的机器,打开gdbserver接口,再用gdb通过网络连接到此接口上进行调试。


1.1  MinGW下编译qemu


首先我们需要一个可用的qemu,选择最新的2.2.0版本。

要在MinGW下成功编译,需要SDL-1.2.5,还需要directx,这个可以在libsdl.org上获得。

./configure –target-list=i386-softmmu

make

就可以了。


我们需要i386-softmmu目录下生成的qemu-system-i386.exepc-bios目录下的文件。

由于我们只对内核有兴趣,所以暂时不需要制作虚拟硬盘。


1.2  编译内核


接下来在kernel.org上下载linux-3.18.9的内核。

同样打开内核的调试信息。

我们需要内核根目录下的vmlinuxarch/x86/boot/bzImage文件。


1.3  QEMU加载内核


接下来我们用QEMU加载内核:

qemu-system-i386 –kernel bzImage –S –gdb tcp:127.0.0.1:1234

这里的-SQEMU在启动时等待gdb连接。

-gdb指定gdbserver要绑定的ip和端口。

执行此命令后QEMU的状态:

技术分享



1.4  使用gdb连接


打开gdb并加载vmlinux

gdb vmlinux

然后在gdb的命令行下执行:

技术分享


此时的QEMU

技术分享



1.5  vs2013调试内核


在用命令行调通QEMU之后,用VS2013就很简单了,只需要将前面的-exec-run改为target remote127.0.0.1:1234就可以了。

创建一个内核工程,将项目类型修改为Linux内核:

技术分享


再将目标主机的连接方式改为Qemu

技术分享


再修改调试时的工作目录:

技术分享


start_kernel函数设置一个断点,然后就可以调试运行了,F5~~~~

技术分享


哈哈,一切顺利!!!


再试试单步执行,一切正常~~~

收工技术分享



??

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。