使用VS GDB扩充套件在VS上远端侦错Linux上的C/C++程序
来源:互联网 发布:网络安全法 执法协助 编辑:程序博客网 时间:2024/05/29 17:13
在 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 的设定页,设定建置指令:
图: 设定如何将程式丢上远端主机并且进行编译
这里我的设定值是:
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++程序
- 如何解决标准C库的函数在vs上使用时出现的警告
- 让vs编写的程序在未安装vs的电脑上使用的一种方法
- Cppcheck在vs上使用
- 使用VS创建C程序
- 在VS上创建一个leapmotion的c++程序
- 解决VS2008写的Visual C++ 程序无法在没有安装VS的机子上使用
- 模拟Linux命令行方式在Windows下编译C/C++程序(使用VS编译器)
- VS写的程序-游戏在未安装VS的电脑上运行
- 第一个跑在linux上的c程序
- windows上mysql在VS中的使用
- Linux上的C/C++调试器GDB
- Gtest在vs 2010上的配置
- Gtest在vs 2010上的配置
- GAlib在VS上的安装配置
- 汇编代码在vs上的使用方法
- opencv在vs上的环境配置
- 在AIX机器上的C程序
- python 爬取XX美图妹子照片
- 阈值分割,手动设置阈值
- IOS中使用http协议,以及http协议参数的分析
- 自适应阈值分割
- 解密Animate.css之CSS3动画实现方式大全源码(6星级)
- 使用VS GDB扩充套件在VS上远端侦错Linux上的C/C++程序
- 注入攻击-SQL注入和代码注入
- YCSB扩展-语句执行频率,执行指定的测试查询语句
- sql 联合查询
- 61. Rotate List【M】【54】【leetcode】
- Android Fragment 真正的完全解析(下)
- maven 常用命令
- QT格式化代码快捷键
- chrome的渲染算法确实有点屌