使用VS GDB扩充套件在VS上远端侦错Linux上的C/C++程序

在 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 来进行侦错了!

时间: 2024-10-10 03:09:28

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

在windows上通过浏览器访问linux上的服务

----以下均为在centos7上进行的操作----防火墙上添加端口 firewall-cmd --zone=public --add-port=80/tcp --permanent----防火墙上删除端口 firewall-cmd --zone=public --remove-port=80/tcp --permanent firewall-cmd --list-ports #查看已经开放的端口 firewall-cmd --reload #重启firewall systemctl stop

Linux上进程追踪与调试(strace和gdb)

引言: 我们某些服务出现故障的时候,我们都是根据屏幕的输出以及打印的日志来查找出出现了什么样的错误,但是有时候我们的很多守护进程启动正常却访问不到,比如我们使用Nginx服务,登陆web的时候,却迟迟不发生页面跳转或者访问页面迟迟没反应,这个时候我们就需要对nginx这个服务做一次进程追踪,我们使用strace/gdb这样的命令对进程做一次追踪, strace: 1,strace命令说明 strace是能够显示用户空间发出的任何系统调用,在命令的执行过程中,strace会记录和解析命令进程的所有

【Linux程序员福音】在Visual Studio上用C++写Linux

如今我们正在开发一个新的插件,一个能够让开发者在Visual Studio(以下简称 VS ) 上建构能够在 Linux 上运行 C++ 程序的套件.开发者可以借由这个插件将 C++ 程序移转到 Linux 服务器.PC 以及移动设备上,也同时可以借由这个插件将这些机器连结至你的 VS 上. VS 将会自动地复制一份并在远端建构你的来源档,再运行带有除错器的应用程序.我们的这项计划也针对特殊的架构提供系统支持,包含 ARM 等.下方文章将继续介绍使用我们这套全新的 Linux 计划. 目前我们仅

将Windows文件挂在到Linux上

1.先在windows下面共享需要挂载的目录. 2.确保linux与windows是在同一个局域网当中. 3.在linux下面创建一个需要挂载到的目录. 4.利用mount命令进行挂载. (1),mount -t cifs //ip/windows共享目录名 /linux上面的挂载点目录 -o username=windows用户,password=访问共享需要的密码 或者 mount -t cifs -o username='用户名',password='密码' //ip/共享目录名 /挂在路

在 RedHat Enterprise、CentOS 或 Fedora Linux 上安装 MongoDB

在 RedHat Enterprise.CentOS 或 Fedora Linux 上安装 MongoDB 1.大纲 ? 备注:采用yum安装后,所有进程将自动在/usr/bin下,如下的mongo.mongod.mongostat以后都可以直接cd /usr/bin之后直接使用. 该教程列出了在 RedHat Enterprise Linux.CentOS Linux.Fedora Linux 及相关系统上部署Mongodb的基本安装流程.该程序使用 .rpm 程序包作为安装基础.10gen

jenkins---windows上构建项目jar包上传到linux上

2018年02月05日 11:02:17 阅读数:851 1,怎么构建jar包可以参考下此链接:http://blog.csdn.net/zk0920zk/article/details/79230707 2,接下来讲下怎么通过windows bat上传文件到linux上 添加windows batcht代码 echo "开始上传文件" pscp -l name -pw password -r h:/a.csv name@ip:/usr/local/beta echo "上传

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

下载:sz中的s意为send(发送),告诉客户端,我(服务器)要发送文件 send to cilent,就等同于客户端在下载. 上传:rz中的r意为received(接收),告诉客户端,我(服务器)要接收文件 received by cilent,就等同于客户端在上传. *如果linux上没有这两个命令工具,则需要先安装.可以使用yum安装.运行命令yum install lrzsz 原文地址:https://www.cnblogs.com/locker777/p/10084155.html

Linux上命令的使用格式和基础命令详解

一.Linux上命令的使用格式 命令行提示符详解: 用户通过终端的命令行接口来控制操作系统,登陆后如下: [[email protected] ~]# root: 当前登录的用户 @:分隔符 localhost: 当前主机的主机名,非完整格式:此处的完整格式为:localhost.localdomain [[email protected] ~]# hostname localhost.localdomain ~:用户当前所在的目录(current directory),也称为工作目录(work

Linux上使用Qt Creator进行C/C++开发

Qt Creator支持中文,启动速度比Eclipse.Netbeans更快,界面也更美观,跟输入法Fcitx协作良好(光标跟随). 你既可以把Qt Creator当代码编辑器作为vim辅助,好处在于Qt Creator能够自动parse项目,形成友好快速的智能提示,而且你也同样可以使用Qt Creator里面的gdb前端(上图)和valgrind前端(高清大图) 对项目进行调试和内存分析,不过Makefile就要自己写或者用autotools生成了,这对于使用vim进行编程的同学来说,应该是轻