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开发。利用这个插件,将可以在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-softmmu
make
就可以了。
我们需要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~~~~
哈哈,一切顺利!!!
再试试单步执行,一切正常~~~
收工
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。