Windows下开发、调试Linux C/C++程序

时间:2021-06-22 02:22:26

背景

据我所知,开发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)(嵌入式系统和物联网模块)

² C/C++ LinuxApplications

² 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,新建项目,出现如下界面,表明安装成功:

Windows下开发、调试Linux C/C++程序

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,修改对应主机的设置,如下:

Windows下开发、调试Linux C/C++程序

编译效果

Windows下开发、调试Linux C/C++程序

调试效果

Windows下开发、调试Linux C/C++程序

嵌入式Linux程序

创建工程

对于编译、调试在不同linux下的。比如说交叉编译在一个linux下,但运行、调试在另一linux下的嵌入式开发。可以在创建工程时,如下配置:

Windows下开发、调试Linux C/C++程序

不同点有2:

Remote toolchain:远程编译工具链,要指定。

Deploy : 部署主机也要选。

环境要求

两个linux都要有SSH服务。

编译用linux还要有交叉编译工具链。

部署用linux还要有gdbserver。

一般情况下编译用linux都有SSH,工具链也可得到。但部署用linux一般都没有SSH、gdbserver,需要仔细找下SDK,看是否提供。如果没有,可以下载openssh、gdb交叉编译一个出来。

调试效果

Windows下开发、调试Linux C/C++程序

Linux上的文件

在交叉编译Linux上,会自动创建如下目录及文件:

Windows下开发、调试Linux C/C++程序

在部署Linux上,会自动创建如下目录及文件:

Windows下开发、调试Linux C/C++程序