您的位置:首页 > 运维架构 > Linux

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

2015-03-13 22:32 489 查看
快乐虾http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651)欢迎转载,但请保留作者信息

VELT的全称是Visual EmbedLinuxTools,它是一个visual studio插件,用以辅助完成Linux开发。利用这个插件,将可以在visualstudio的IDE中进行Linux应用程序的开发(包括编译和调试),也可以进行uboot和linux内核的编译和调试,并根据编译时的错误信息正确定位到源码。目前的版本是0.1.5,仅支持vs2013。此插件可以在百度网盘下载(http://pan.baidu.com/s/1c0lMxdm),安装过程参见《用vs2013+velt-0.1.4进行嵌入式开发:插件安装》。下面是它的基本功能:支持x86 Linux,海思hi3516/hi3520,MinGW这几个平台,提供这几个平台的项目模板。
完成UBOOT的编译,并根据编译的错误信息自动定位到相应的文件位置。
完成LINUX内核的编译,并根据编译的错误信息自动定位到相应的文件位置。
利用串口进行内核的简单调试。
在VS下完成Linux内核的配置。
不使用Makefile进行Linux应用程序的编译。
使用Makefile进行Linux应用程序的开发。
使用SSH连接目标机器并用gdb进行应用程序的调试。
使用Telnet连接目标机器并用gdb进行应用程序的调试。
在VS中集成Linux终端(Poderosa),支持SSH/Telnet/Com,在打开终端时自动将VS的变量导出为bash里的变量,如ProjectDir等。
带python-2.7.6,且集成了numpy, scipy, matplotlib, cv2, pyqt4等python库。可以在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-softmmumake就可以了。

我们需要i386-softmmu目录下生成的qemu-system-i386.exe和pc-bios目录下的文件。由于我们只对内核有兴趣,所以暂时不需要***虚拟硬盘。

1.2 编译内核

接下来在kernel.org上下载linux-3.18.9的内核。同样打开内核的调试信息。我们需要内核根目录下的vmlinux和arch/x86/boot/bzImage文件。

1.3 用QEMU加载内核

接下来我们用QEMU加载内核:qemu-system-i386 –kernel bzImage –S –gdb tcp:127.0.0.1:1234这里的-S让QEMU在启动时等待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~~~~


哈哈,一切顺利!!!

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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: