Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用Visual Studio调试linux程序

用Visual Studio调试linux程序

作者头像
范蠡
发布于 2018-04-04 06:58:00
发布于 2018-04-04 06:58:00
5.9K0
举报

Visual Studio调试linux程序?你真的没看错,这个是真的,不是标题党。当然如果你说VS2015及以上版本自带的linux调试插件,那就算了。这些自带的插件调试一个有简单的main函数程序还凑合,稍微复杂点的程序,根本无法编译调试。

而本文介绍的主角是VS的另外一款插件Visual GDB,让我们欢迎主角登场,下面是正文。

使用Visual Studio+VisualGDB调试远程linux程序

需要工具:

  1. Visual Studio 2013或以上版本(以下简称VS)
  2. VisualGDB(一款VS插件,官网为:http://visualgdb.com/)
  3. 含有调试符号的linux程序文件(该程序文件为调试目标)
  4. Visual Assistant(番茄助手,另外一款VS插件)

在VS上安装完VisualGDB插件以后,有如下几种方式来对远程linux机器上的程序进行调试:

  • 方法一、如果该程序已经启动,则可以使用VS菜单【Debug】->【Attach to Process...】。

这种方法有个缺点是,不能从开始启动的main函数处添加断点,自始至终地调试程序,查看完整程序运行脉络,所以下面推荐方法二。

  • 方法二、利用VS启动远程linux机器上一个linux程序文件进行调试。选择VS菜单【Debug】 ->【Quick Debugwith GDB】。

需要注意的地方,已经在上图中标红框。这里简单地解释一下:

如果你安装了交叉编译环境Target可以选择MinGW/Cygwin,否则就选择远程linux系统。这里如果不存在一个ssh连接,则需要创建一个。

Debugged program是需要设置的被调试程序的路径,位于远程linux机器上。

Arguments是该调试程序需要设置的命令行参数,如果被调试程序不需要命令行参数可以不设置。

Working directory是被调试程序运行的工作目录。

另外建议勾选上Initial breakpoint in main,这样启动调试时,程序就会停在程序入口处。

这样,我们就可以利用VS强大的功能去查看程序的各种状态了,常用的面板,如【内存】【线程】【观察】【堆栈】【GDB Session】【断点】等窗口位于VS 菜单【Debug】->【Windows】菜单下,注意,有些窗口只有在调试状态下才可见。这里有两个值得强调一下的功能是:

  1. GDB Session窗口,在这个窗口里面可以像原来直接使用gdb调试一样输入gdb指令来进行调试。
  1. SSH console窗口,这个窗口类似一个远程操作linux系统的应用程序如xshell、SecureCRT。

现在还剩下一个问题,就是我们虽然在调试时可视化地远程查看一个linux进程的状态信息,但很多类型的定义和什么却无法看到。解决这个问题的方法就是你可以先在VS里面建立一个工程,导入你要调试的程序的源代码目录。然后利用方法一或者方法二去启动调试程序。这个时候你想查看某个类型的定义或什么只要利用Visual Assit的查看源码功能即可,快捷键是Alt + G。

需要注意的时:同时安装了Visual Assist和VisualGDB后,后者也会提供一个go按钮去查找源码定义,但这个功能远不如Visual Assist按钮好用,我们可以禁用掉它来使用Visual Assist的Go功能。禁用方法,打开菜单:【Tools】->【Option...】:

然后重启VS即可。

到这里,既可以查看源码,也可以调试程序了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 高性能服务器开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
原来gdb的底层调试原理这么简单
这篇文章我们来聊聊大名鼎鼎的 GDB,它的豪门背景咱就不提了,和它的兄弟 GCC 一样是含着金钥匙出生的。相信每位嵌入式开发工程师都使用过 gdb 来调试程序,如果你说没有用过,那只能说明你的开发经历还不够坎坷,还需要继续被 BUG 吊打。
IOT物联网小镇
2021/05/13
1.8K0
原来gdb的底层调试原理这么简单
Linux调试工具
Printf(“valriable x has value = %d\n”, x)
战神伽罗
2019/07/24
10.2K0
Linux调试工具
GDB调试入门,看这篇就够了
GDB(GNU Debugger)是UNIX及UNIX-like下的强大调试工具,可以调试ada, c, c++, asm, minimal, d, fortran, objective-c, go, java,pascal等语言。本文以C程序为例,介绍GDB启动调试的多种方式。
编程珠玑
2019/07/23
7.8K0
GDB调试入门,看这篇就够了
Visual Studio Debug 教程:入门
Solution 的配置有两种基本类型: Debug 和 Release,区别如下:
keloli
2018/09/13
1K0
Go语言实战笔记(二十三)| Go 调试
对于任何程序员来说,调试程序是必备的技能。当我们的开发好的程序不符合我们的预期时,就需要我们通过调试它找到根本的原因,然后才可以有针对性的解决它。
飞雪无情
2018/08/28
7550
用图文带你彻底弄懂GDB调试原理
这篇文章来聊聊大名鼎鼎的GDB,它的豪门背景咱就不提了,和它的兄弟GCC一样是含着金钥匙出生的,在GNU的家族中的地位不可撼动。相信每位嵌入式开发工程师都使用过gdb来调试程序,如果你说没有用过,那只能说明你的开发经历还不够坎坷,还需要继续被 BUG吊打。
IOT物联网小镇
2021/05/13
6.2K0
用图文带你彻底弄懂GDB调试原理
调试HotSpot源代码(配视频)
本文将详细介绍在Ubuntu16.04 LTS上对OpenJDK8进行编译,为了方便大家快速搭建起OpenJDK8的调试开发环境,我还录制了对应的视频放到了B站上,大家可以参考。
全栈程序员站长
2021/04/07
1.5K0
C/C++代码调试的几点建议
代码调试在程序开发阶段占有举足轻重的地位,可见代码调试的重要性。但是有一点必须强调:程序是设计出来的,而不是调试出来的。这是所有程序员必须牢记在心的一条准则。一个没有设计或者这几得很糟糕的程序,无论怎样调试,也不会成为一个合格的程序。
恋喵大鲤鱼
2018/08/03
6740
linux下的程序调试方法汇总
搞电子都知道,电路不是焊接出来的,是调试出来的。程序员也一定认同,程序不是写出来的,是调试出来的。那么调试工具就显得尤为重要,linux作为笔者重要的开发平台,在linux中讨论调试工具主要是为那些入门者提供一些帮助。调试工具能让我们能够监测、控制和纠正正在运行的程序。我们在运行一些程序的时候,可能被卡住或出现错误,或者运行过程或结果,没能如我们预期,此时,最迫切需要明白究竟发生了什么。为了修复程序,剖析和了解程序运行的细节, 调试工具就成为了我们的必备工具,工于善其事,必先利其器。在Linux下的用户空间调试工具主要有系统工具和专门调试工具:'print' 打印语句,这是新手最常用的,也是最不提倡使用的;查询 (/proc, /sys 等)系统的虚拟文件查看,这个方法有局限性;跟踪 (strace/ltrace)工具使用这个比较普遍,值得提倡;Valgrind (memwatch)内存排除工具,在内存排除方面比较独到,是内存排错的法宝;GDB大名鼎鼎的程序调试工具,这个是个全能的工具,没有完不成的,只有你不知道的。
战神伽罗
2019/07/24
4.1K0
linux下的程序调试方法汇总
使用GDB调试Linux内核
GDB(GNU Debugger)是Linux上的调试程序,可用于C/C++、Go、Rust等多种语言。GDB可以让你在被调试程序执行时看到它的”内部“情况,观察程序在特定断点上的状态,并逐行运行代码。
mazhen
2023/11/24
1.9K0
使用GDB调试Linux内核
深入了解Linux —— 调试程序
但是,如果我们在写代码的时候遇见了错误;但是我们并不知道错误在哪,在windows下,我们可以进行调试来查找代码错误的位置进行修改;我们在linux就只能查看源代码,直接查找错误,这样很麻烦;
星辰与你
2025/03/10
1100
深入了解Linux —— 调试程序
GDB 调试笔记
GDB 是一个由 GNU 开源组织发布的 *.nix 下的、基于命令行的一款比较知名的程序调试工具。
zucchiniy
2020/05/22
9610
Linux系统下gdb调试(一)
这段时间逛了一下招聘网站上,对于嵌入式要求里面有要求会gdb调试,而且再加上昨天在交流群里面,刚好有网友问gdb怎么调试,这让我学gdb调试的欲望越来越强烈,这不,应网友的要求,今天就来给大家分享自己总结的实战调试方法(这里可能暂时写的比较基础一点,不过还请各位读者原谅,毕竟自身也是刚接触这个还没一个小时呢,同时也参考网上的博客和b站视频的学习,不过这里感觉还是老外的gdb视频讲解的比较好,hh)。
用户6280468
2022/03/18
5.4K0
Linux系统下gdb调试(一)
【Linux调试工具】gdb/cgdb
GDB(GNU Debugger)是GNU项目中的一款强大的调试工具,广泛应用于调试C、C++等语言编写的程序。它可以帮助开发者在程序运行时跟踪执行流程、设置断点、查看变量值、检测错误等,大大提高了调试效率。
用户11305458
2024/10/12
2620
【Linux调试工具】gdb/cgdb
【Linux】调试工具gdb的使用
在前文,我们已经讲解了vim工具以及gcc/g++的使用,我们可以进行编写代码以及编译代码了,但是还没有学习如何在Linux下对代码进行调试,通过本章的学习,将学会如何使用gdb对代码进行调试。
诺诺的包包
2023/02/27
3.5K0
【Linux】调试工具gdb的使用
【Linux】Linux调试器-gdb使用
在前面的博客【Linux】编译器-gcc/g++使用已经分享了关于编译器的使用,而编译器的使用离不开调试,这次就来分享一下Linux调试器-gdb使用。
zxctscl
2024/04/10
4110
【Linux】Linux调试器-gdb使用
C/C++生态工具链——GDB调试器
GDB全称是GNU symbolic debugger,是Linux平台下最常用的一款调试器。GDB主要用于C/C++开发场景,同时也支持Go、Ada等语言的调试。GDB主要以命令行的形式在shell终端使用,它的一部分底层逻辑借助于ptrace进行实现。GDB的功能很强大,开发者可以在执行时修改函数变量的值以及程序的执行顺序,还可以在程序执行期间查看函数的调用过程、堆栈数据等,也可以利用GDB对代码进行断点调试。
Coder-ZZ
2023/02/23
1.7K0
C/C++生态工具链——GDB调试器
猿创征文 | 【Linux】调试器-gdb使用
对于上面的指令足以应付我们日常遇到的一些代码进行相关的调试,解决遇到的问题,同时对于gdb的基本使用我们也能够基本掌握。另外,对于gdb的使用我们应该在后期进行熟练的掌握与使用。
平凡的人1
2022/11/15
8730
猿创征文 | 【Linux】调试器-gdb使用
Visual Studio 调试(系列文章)
  Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题。 该调试器可用于所有 Visual Studio 编程语言及其关联的库。 使用调试程序时,可以中断程序的执行以检查代码、检查和编辑变量、查看寄存器、查看从源代码创建的指令,以及查看应用程序占用的内存空间。
张传宁IT讲堂
2019/09/17
8680
Visual Studio 调试(系列文章)
深入探索GDB:Linux下强大的调试神器
GDB,全称GNU Debugger,是一款开源、跨平台的源码级调试工具,尤其在Linux生态系统中占据着举足轻重的地位。GDB支持包括C、C++、Fortran、Ada、Objective-C、Go、D等多种编程语言,能够与GCC、Clang、LLVM等一系列主流编译器无缝集成。无论是针对桌面应用程序、服务器端服务,还是嵌入式系统,GDB都能以其强大的功能和灵活的交互方式,为开发者提供无与伦比的调试体验。
P_M_P
2024/04/25
1.1K0
深入探索GDB:Linux下强大的调试神器
相关推荐
原来gdb的底层调试原理这么简单
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档