当前位置:首页 > 操作系统 > Linux

VELT-0.1.5开发:在vs2013下调试Linux内核

快乐虾

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

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

本文仅适用于vs2013 + velt-0.1.5



VELT 的全称是 Visual EmbedLinuxTools ,它是一个与 visual gdb 类似的 visual studio 插件,用以辅助完成 Linux 开发。利用这个插件,将可以在 visual studio IDE 中进行 Linux 应用程序的开发(包括编译和调试),也可以进行 uboot linux 内核的编译,并根据编译时的错误信息正确定位到源码。目前的版本是 0.1.4 ,仅支持 vs2013 。此插件可以在 CSDN 下载频道下载( http://download.csdn.net/detail/lights_joy/8429771 。下面是它的基本功能:

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

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

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

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

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

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

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

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

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



在用 gdb 命令行成功连接目标板后,尝试在 vs2013 下连接目标板。

与应用程序相比,仅仅只需要将原来的 -exec-run 改为 target remoteCOM1 ,其余照旧。

很快就看到结果了。


首先配置好调试参数:

技术分享


由于 gdb 运行于 windows 下,因而这里采用 windows 路径。 gdb 将读取 linux 内核源码根目录下的 vmlinux  


当启动调试时, RemoteConsole 会输出提示信息并等待:

技术分享


此时调试器将等待串口输出:

kgdb: Waiting for connection from remote gdb...

在接收到此输出后启动 gdb 并加载 vmlinux

技术分享


然后可以看到 vs 中断下来:

技术分享



此时的调用栈:

技术分享


呵呵,小小地激动了一把。


在我们的驱动上设一个断点, run

技术分享



这回是大大地激动了一把。

不过在用了一段时间后激动慢慢退去,越来越觉得不爽,最主要的就是一个字

毕竟是串口的东西!!

而且由于内核的优化,很多东西其实是显示不出来的。

线程也不正确:

技术分享



只有当前中断的内核线程可以取到栈。

反汇编基本显示不出来,因为太慢了,而且有数据丢失。

下回试试用命令行的接口,不用 mi






??

原文:http://blog.csdn.net/lights_joy/article/details/44205775


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!