背景
据我所知,开发Linux C/C++ 程序的一般方式,如下:
² 使用SecureCRT+UltraEdit(FTP)工具远程编辑、编译(Makefile+gcc)、调试(gdb)Linux程序。
² Windows 上装Linux虚拟机,在虚拟机上使用Vim、gcc、gdb来编辑、编译、调试。
使用IDE的方式,有:
² Linux装Eclipse CDT,直接在虚拟机上编程。
² Linux装Eclipse CDT,通过X11端口转发,实现Windows下编译、调试。
² Windows装CDT,通过samba共享,使用gdbserver远程调试。但需要Linux下编译。
那么有没有办法实现在Windows环境下,开发、调试 Linux C服务器程序(64位)或嵌入式程序呢?答案就是VisualGDB。
VisualGDB介绍
参考官网 https://visualgdb.com/,简单翻译如下:
VisualGDB是一个Visual Studio插件,支持VS2008-2017主流版本。其目标是简化使用Visual Studio的跨平台开发。
支持的平台
² Barebone embedded systems and IoT modules (see full list)(嵌入式系统和物联网模块)
² Native AndroidApps and Libraries
² Raspberry Pi and other Linux boards
² Linux kernel modules (separate VisualKernel product)
² Target your own devices and platforms with ExtensibilityAPI
提供的工具
² Embedded toolchains(嵌入式工具链)
² Cross-compilers for common Linux boards(通用Linux板卡上的交叉编译器)
² Compilers/debuggers on Debian- and RedHat-based Linux(Debian、RedHat系列Linux上的 编译器/调试器)
² GDB Stub software like OpenOCD
单元测试
VisualGDB集成了流行的CppUTest和GoogleTest框架,鼠标点击一下,就可以在以下平台上进行单元测试:
² Embedded ARM devices via JTAG/SWD
² Linux machines and boards like Raspberry Pi
² Android devices
工程构建
VisualGDB 提供一个高性能MSBuild后台,专为快速构建嵌入式和Linux工程,并提供了自动、精确的 IntelliSense。
如果工程已使用了GNU Make,CMake 或 QMake,也可很容易导入VisualGDB。
强大的调试体验
VisualGDB在本地、SSH、JTAG调试时,提供了和Visual Studio一致的体验。你只需按F5,剩下的都由VisualGDB完成。
VisualGDB安装
假设你已安装了Visual Studio,我装的是2010版本。
在https://visualgdb.com/download/下载。下载完是类似VisualGDB-*-trial.msi的文件。双击安装即可。
安装完成后,打开VS2010,新建项目,出现如下界面,表明安装成功:
CSDN有旧版本破解版下载:http://download.csdn.net/download/a3676212/9630637
Linux服务器程序
创建工程
对于编译、执行环境在同一linux主机上的工程创建步骤,可参考https://visualgdb.com/tutorials/linux/,逐步操作即可。
工作原理
² 在本地Windows创建工程(VS2010),实现代码编辑功能。
² 在VS上build时,使用SCP(基于SSH),实现Windows与Linux代码同步。并使用SSH,操作Linux远程服务器,实现编译功能。
² 在VS上Debug时,使用SSH在Linux上启动gdbserver,实现调试功能。
细节:
创建工程时,会将环境变量配置的头文件下载到本地Windows,实现代码的提示、检查功能。
遇到的问题
在build时,提示上传代码失败。此时在VS2010上点工具->SSH Host Manager,修改对应主机的设置,如下:
编译效果
调试效果
嵌入式Linux程序
创建工程
对于编译、调试在不同linux下的。比如说交叉编译在一个linux下,但运行、调试在另一linux下的嵌入式开发。可以在创建工程时,如下配置:
不同点有2:
Remote toolchain:远程编译工具链,要指定。
Deploy : 部署主机也要选。
环境要求
两个linux都要有SSH服务。
编译用linux还要有交叉编译工具链。
部署用linux还要有gdbserver。
一般情况下编译用linux都有SSH,工具链也可得到。但部署用linux一般都没有SSH、gdbserver,需要仔细找下SDK,看是否提供。如果没有,可以下载openssh、gdb交叉编译一个出来。
调试效果
Linux上的文件
在交叉编译Linux上,会自动创建如下目录及文件:
在部署Linux上,会自动创建如下目录及文件: