在 Linux 上开发 C/C++ 程序,或许你会直接(本机或远端)登入 Linux,打开编辑器写完代码后,就用 gcc/g++ 来编译,遇到要除错(debug)的时候,则会选择使用 gdb 来进行除错。现在,如果你刚好也很喜欢 Visual Studio,你可以不必改变习惯,用 Visual Studio写程式、然后远端送到 Linux 上编译、甚至还能接上 gdb 来除错。这个对于开发像是嵌入式系统、或是 IoT 装置的程序等等就可以多多利用 Visual Studio 强大的 IDE 能力。

图: 应该有不少在 Linux 上写程式的开发人员是这么工作的吧?

  如何做?

  首先,你必须使用 Visual Studio 2015,你可以使用免费版[1]的 Visual Studio 2015 Community 或是其它更高等级的版本,记得在安装时要勾选 Visual C++ 以及 C++ 跨平台行动开发这两个元件:

  图: 安装 Visual C++

  然后只要再安装 Visual Studio GDB Debugger 这个扩充套件,就能够在 Visual Studio 的 Visual C++ > 跨平台的项目类型中选择 Makefile Project (GDB) 的项目范本。

图: 在 Visual Studio 中建立 Makefile Project (GDB)

  建立项目后,启始画面就会有简单的说明如何连接远端的 GDB 来进行除错,照着做应该就没有什么大问题了。会用到与 SSH 相关的工具可以到 PuTTY 的网站上下载相关的工具。

  图: 使用 VS GDB 扩充套件的教学

  首先在项目上按右键选择内容,设定侦错的环境,像是远端主机的位址、然后认证用的 pub/private key,还有连接的方式(ssh 或 plink)等等,这里要注意的是连接服务器是使用 RSA 的公私钥的方式进行认证,所以你必须先产生一组 RSA 金钥,然后在 Linux 主机上放好公钥,然后这里设定是用私钥去验证(图中的 .ppk 档桉)。

  图: 设定远端主机连线的资讯

  然后就是设定在编译程序时要如何把程式上传到目标的 Linux 机器上,然后用机器上的 gcc/g++ 来进行编译,切换到 NMake 的设定页,设定建置指令:

http://roucheng.cnblogs.com/  

图: 设定如何将程式丢上远端主机并且进行编译

  这里我的设定值是:

d:\tools\pscp.exe -i $(PrivateKey) "D:\Temp\Project1\Project1\main.cpp" $(RemoteUserName)@$(RemoteHostName):$(RemoteWorkingDirectory)/main.cpp

$(SecureShellExecutable) $(RemoteUserName)@$(RemoteHostName) -i $(PrivateKey) "cd $(RemoteWorkingDirectory);g++ -g main.cpp -o $(RemoteExecutable)"

  这里我是用 pscp 把档案传上 Linux 主机上后,再用 g++ 来进行编译,其它的变数都是前面设定的值,你可以根据你的工具以及档档案所在位置做修改。

  接下来你就可以开始撰写程序了,然后就像在 Visual Studio 里写其它程序一样设定中断点,但是执行时选择 Remote GDB 就可以开始进行远端侦错了。

  图: 启动远端主机的 gdb 来除错,但结合Visual Studio 的侦错介面

  看起来就好像都是在 Visual Studio 中的除错画面,但是这个代码确实已经送上 Linux 主机进行编译,并且使用 gdb 来进行侦错了!

使用VS GDB扩充套件在VS上远端侦错Linux上的C/C++程序的更多相关文章

  1. 使用Windows上Eclipse远程调试Linux上的Hadoop

    一.设置Eclipse运行用户     如果以与Hadoop运行用户名(比如grid)不同的用户运行Eclipse,则无法对Hadoop运行用户所属的文件进行管理,运行Map/Reduce程序也会报& ...

  2. windows上用putty从linux上下载文件

    我之前使用putty都是直接从网上下的putty.exe,其实如果想下载windows的mis二进制文件,系统安装的话会包含,pscp.psftp.puttygen等一系列的文件. 今天下从服务器上, ...

  3. 搭建hadoop环境,在win7的eclipse上远程操作(Linux上)hadoop2.6.0出错的一些总结

    问题1:在DFS Lcation 上不能对文件进行操作: 解决方法: 在hadoop上的每个节点上修改该文件 conf/mapred-site.xml,增加: <property> < ...

  4. 解决NTFS分区上的代码在linux上编译后没有权限执行

    win7下的cpp代码,在ubuntu下编译后,可执行文件不能执行,root也不行. 将代码拷贝到ubuntu上,再编译生成的可执行文件则可以执行.或者将win7分区上的可执行文件拷贝出来,然后chm ...

  5. JAVA 上传文件到linux上并解压缩

    package com.inborn.inshop.controller.mkt; import java.io.*; import ch.ethz.ssh2.ChannelCondition;imp ...

  6. 在SecureCRT中给linux上传和下载文件

    下载:sz中的s意为send(发送),告诉客户端,我(服务器)要发送文件 send to cilent,就等同于客户端在下载. 上传:rz中的r意为received(接收),告诉客户端,我(服务器)要 ...

  7. 使用EditPlus编辑Linux上的文本文件

    在Linux上我们都使用vim 或者vi命令对文件进行编辑,但是我们习惯的一般都是windows系统, 那么怎么才能像在windows上一样编辑我们Linux上的文件呢?下面我们就来看看如何使用 wi ...

  8. linux上安装LAMP笔记

    B哥最近在参加比赛,需要把一个php项目部署到服务器上,故此在linux上安装LAMP环境,用于部署项目,第一次安装,做点儿笔记记录一下. 安装条件: Redhat或者CentOS linux环境已装 ...

  9. LINUX上安装JDK+tomcat+mysql操作笔记

    1.环境准备: 1-1.centos 64位(本人的虚拟机安装此系统),安装步骤和网络配置已经在前两篇记录. 1-2.JDK 版本1.8 1-3.tomcat压缩包 1-4.CRT远程连接工具(可用其 ...

随机推荐

  1. ambari初始化登陆账号/密码假如不是admin/admin

    如题:通常软件初始化密码都是admin: 但是hortonworks就突然傻逼了,居然不这样搞.(可能知道一些开发者不看官网文档,就特意弄成这样.正如我) 我上网搜了5分钟.感觉网上应该没有这样的资料 ...

  2. Windows 2008 利用Filezilla server搭建FTP

    Windows 2008 利用Filezilla server搭建FTP, 安装后总是提示Error Connection To Server Lost , 后来,无意中先安装了IIS,再安装file ...

  3. Changing the type of a property with EF Code First

    The smartest way is probably to not alter types. If you need to do this, I'd suggest you to do the f ...

  4. Windows Tomcat7.0 安装 Solr

    准备工作 1.下载Tomcat7.0 ,apache-tomcat-7.0.67.exe,安装目录如下:C:\workspace\Tomcat7.0\ 2.下载Solr 5.2,solr-5.2.0. ...

  5. 系统UINavigationController使用相关参考

    闲来无事便在网上google&baidu了一番UINavigationController的相关文章,然后又看了下官方文档:看看更新到iOS7之后UINavigationController的 ...

  6. 谈"自驱力"

    最新说明: 1.标题是为了博眼球取的,请不大家不要纠结具体薪资数字,我瞎取的 2.请注意素质,不要满口喷粪,不要搞人身攻击,尊重别人,就是尊重你自己 3.请大家就事论事,不要胡乱臆想,请站在全局的角度 ...

  7. c#操作word表格

    http://www.webshu.net/jiaocheng/programme/ASPNET/200804/6499.html <% if request("infoid" ...

  8. Java Web 工作技巧总结 16.8

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 四时不谢之兰,百节长青之竹,万古不败之石,千秋不变之人. 1. AOP – LOG项目中,一个请 ...

  9. C8051 SMBus 原理

    一.SMBus总线   SMBus串行I/O接口完全符合系统管理总线规范 1.1 版.它是一个双线的双向串行总线,与I2C串行总线兼容.系统控制器对总线的读写操作都是以字节为单位的,由SMBus接口自 ...

  10. java 使用 ScriptEngineManager 解析逻辑表达式

    将表达式替换成js使用的文本格式.然后带入eval函数. public class JieXi { public static void main(String[] args) throws Exce ...