简而言之:有没有人知道gdb的GUI会使它与更新版本的Visual C ++中的功能集相提并论?

详细说明:作为一个花了很多时间在Windows上编程的人,每当我在Linux中编写C ++代码时,我发现的一个更大的绊脚石就是使用命令行gdb调试任何东西需要花费我几倍的时间。 Visual Studio,它似乎没有通过练习变得更好。 有些事情只是更容易或更快地以图形方式表达。

具体来说,我正在寻找一个GUI:

  • 处理所有基础知识,例如踩到代码,观察变量和断点
  • 理解并可以显示复杂和嵌套的C ++数据类型的内容
  • 不会感到困惑,并且最好能够在显示相关信息(如参数类型)的同时智能地逐步执行模板化代码和数据结构
  • 可以处理线程应用程序并在不同线程之间切换以单步执行或查看状态
  • 除了在gdb中启动程序之外,还可以处理附加到已启动的进程或读取核心转储

如果这样的程序不存在,那么我想听听人们对于至少满足一些要点的程序的经验。 有没有人有任何建议?

编辑:
列出可能性是很好的,我将采取我可以得到的,但如果你可以包括在你的回复中会更有帮助:
(a)您是否实际使用过此GUI,如果是,您对此有何积极/消极的反馈。
(b)如果您知道,上述哪些功能不受支持

列表很容易获得,像这样的网站很棒,因为你可以了解人们的应用程序的个人经验。

===============>>#1 票数:84

Eclipse CDT将提供与使用Visual Studio相媲美的体验。 我每天都使用Eclipse CDT来编写代码并调试本地和远程进程。

如果您不熟悉使用基于Eclipse的IDE,GUI将需要一点时间习惯。 但是,一旦您了解了Eclipse独有的GUI思想(例如透视图),使用该工具就会成为一种很好的体验。

CDT工具提供了一个不错的C / C ++索引器,允许您快速查找代码库中方法的引用。 它还提供了一个很好的宏扩展工具和有限的重构支持。

关于支持调试,CDT能够执行列表中的所有操作,但读取核心转储除外(它可能支持此功能,但我从未尝试过使用此功能)。 另外,我使用模板调试代码的经验有限,所以我不确定CDT在这方面会提供什么样的经验。

有关使用Eclipse CDT进行调试的更多信息,您可能需要查看以下指南:

===============>>#2 票数:78

gdb -tui可以正常工作,如果你想要GUI-ish,但仍然基于字符。

===============>>#3 票数:55 已采纳

你不会发现任何覆盖GDB的东西 ,它可以与Visual Studio调试器的原始功能竞争。 它太强大了,它在IDE中集成得太好了。

对于Linux替代方案,如果您喜欢自由软件,请尝试使用DDD。

===============>>#4 票数:47

查看Nemiver C / C ++调试器 它很容易在Ubuntu(开发人员工具/调试)中安装。

更新:新链接。

===============>>#5 票数:29

我不喜欢Windows开发的想法,但VC ++调试器是我见过的最好的。 我还没有找到一个接近VC的GUI前端。

一旦你真正习惯了GDB就很棒了。 足够愤怒地使用它,你会变得非常精通。 我可以围绕一个程序来完成你所列出的所有事情而不需要太多努力。 在我精通之前,确实需要一个月左右的时间才能通过SSH链接到远程服务器。 我永远不会回去。

DDD真的很强大,但它非常多。 我发现当它从GDB收到消息时它经常冻结。 它很好,因为它有一个gdb接口窗口,所以你可以看到正在发生的事情并直接与gdb交互。 DDD不能在我的环境中的远程X会话上使用(一个真正的问题,因为我在Unix开发时我坐在一个瘦客户端)由于某种原因所以它对我而言。

KDevelop遵循典型的KDE风格并向用户展示了一切。 我也没有在KDevelop中调试非KDevelop程序的运气。

Gnat编程工作室(GPS)实际上是GDB的一个很好的前端。 它不仅仅管理Ada项目,因此如果您需要调试器,则值得尝试。

你可以使用Eclipse,但是它非常重,而且我和我合作的很多经验丰富的Unix人员(包括我在内)并不关心它的界面,这不仅仅是STFU而且让你不受欢迎。 Eclipse也似乎占用了大量空间并像狗一样运行。

===============>>#6 票数:28

Qt Creator看起来很棒。 一位同事向我展示了一种用于调试的方法:

  • 创建一个新项目“导入基于Makefile的项目”。
  • 将它指向您的根项目文件夹(它将索引其下的源,并且它的速度非常快)。
  • 转到项目设置并添加运行配置,然后指定要调试的可执行文件及其参数。
  • Qt Creator似乎坚持在调试之前构建你的项目。 如果您不想要,或者不使用make,则可以覆盖make命令。 我把它改成了“真实”。 :)

对于调试我已经编译的应用程序来说,这看起来似乎有点大,但值得。 调试器以与Visual Studio类似的方式显示线程,堆栈和局部变量,甚至使用许多相同的键盘快捷键。 它似乎很好地处理模板,至少std :: string和std :: map。 虽然我尚未对其进行测试,但似乎支持附加到现有进程和核心转储。

请记住,我现在使用它的时间不到一小时,但到目前为止我印象深刻。

===============>>#7 票数:26

我使用cgdb,简单而有用

===============>>#8 票数:16

我经常使用DDD,一旦你学会使用DDD它就会非常强大。 我要说的一件事就是不要在WAN上使用它,因为它似乎做了很多不必要的屏幕更新。

另外,如果你没有与GDB交配并且不介意筹集一些现金,那么我会尝试TotalView。 它有一个陡峭的学习曲线(它肯定会更直观),但它是我在任何平台上使用过的最好的C ++调试器,可以扩展为以自定义方式内省对象(从而允许您查看STL列表作为实际的对象列表,而不是一堆令人困惑的内部数据成员等。)

===============>>#9 票数:8

查看Eclipse CDT项目。 它是面向C / C ++开发的Eclipse插件,包含一个功能相当丰富的调试透视图(在幕后使用GDB)。 它可在各种平台上使用。

===============>>#10 票数:7

与eclipse gdb前端相似的是emacs前端,与emacs IDE紧密相关。 如果你已经使用emacs,你会喜欢它:

GDB Emacs前端

===============>>#11 票数:6

我使用KDbg(仅在KDE下工作)。

===============>>#12 票数:5

我已经为gdb尝试了几种不同的guis,并且发现DDD对他们来说更好。 虽然我不能评论Linux的其他非gdb产品,但我在其他平台上使用了许多其他调试器。

gdb完成了你愿望清单中的大部分内容。 DDD为他们打造了一个更好的前线。 例如,线程切换变得更简单。 设置断点就像您期望的那样简单。

您还可以获得一个cli窗口,以防您想要做一些不明确的事情。

DDD的一个特性突出于我使用的任何其他调试器之上的是数据“图形”。 这允许您将结构,对象和内存显示和排列为可拖动的框。 双击指针将打开解除引用的数据,并将可视链接返回到父级。

===============>>#13 票数:5

这个列表中缺少一个IDE,效率很高(我在很多C / C ++项目中都没有使用它): Netbeans

===============>>#14 票数:5

如今,Qt Creator-on-Linux肯定与Visual Studio-on-Windows for C ++相当。 我甚至会在调试器方面说得更好。

===============>>#15 票数:5

DDD是gdb的GNU前端: http//www.gnu.org/software/ddd/

===============>>#16 票数:3

你有没有看过DS-5调试器

有一个付费版本,其中包含许多有用的功能,但您也可以免费使用Community Edition(这对于嵌入式系统也非常有用)。

在使用eclipse在真实设备上调试Android应用程序时,我对此工具有积极的体验。

===============>>#17 票数:3

您没有提到您使用的是Windows还是UNIX。

在UNIX系统上, KDevelop很好,但是我使用KDbg,因为它易于使用,也适用于非KDevelop开发的应用程序。

Eclipse在两个平台上都很出色。

在Windows上,有一个名为Wascana Desktop Developer的优秀软件包,它是Eclipse CDT和MinGW,所有软件包都打包完好,并且预先配置得很好。 这是我在Windows上开发GNU代码时发现的最好的东西。

我已经使用了所有这些调试器,但它们都没有MS Dev Studio那么好。 Eclipse / Wascana可能是最接近的,但它确实有一些限制,就像你不能进入DLL那样,它在检查变量方面做得不好。

===============>>#18 票数:3

可以逐步完成的内容将受到g ++产生的调试信息的限制。 Emacs提供了一个gdb接口,允许您通过工具栏/菜单控制它,并在单独的窗口中显示数据,以及直接键入gdb命令。 Eclipse的CDT提供了类似的工具。 我听说过Anjuta和Code :: Blocks但从未使用它们。

===============>>#19 票数:3

作为熟悉Visual Studio的人,我看了几个开源IDE来替换它,而KDevelop是最接近的IMO,是一个Visual C ++人可以坐下来开始使用的东西。 当你在调试模式下运行项目时,它使用gdb,但kdevelop几乎处理整个事情,所以你不必知道它的gdb; 你只是单步踩或将手表分配给变量。

遗憾的是,它仍然不如Visual Studio Debugger好。

===============>>#20 票数:2

VisualGDB是另一个用于在Linux和嵌入式平台上开发和调试应用程序的Visual Studio插件。

===============>>#21 票数:2

代码:Blocks C ++ IDE有一个图形包装器,有一些你想要的功能,但没有VS的强大功能。

===============>>#22 票数:1

你用cygwin gdb尝试过gdb -w吗? 它有一个Windows界面可以很好地工作。

我发现的唯一问题是,在我现在的机器上,直到我安装ddd之后它才运行。 我怀疑它需要安装ddd时安装的tcltk。

===============>>#23 票数:1

KDevelop很好用。

===============>>#24 票数:0

如果您在Visual Studio下查找gdb,请检查WinGDB

===============>>#25 票数:0

在过去的15个月里,我使用了洞察力(FC6附带)。 它不是很好,它是用Tcl / Tk编写的,但它简单实用。 DDD具有相似的质量/实用性,但有些难以使用(各种GUI陷阱和遗漏)。 我还尝试将gdb与我的IDE SlickEdit集成。 它工作正常(我玩了4个小时),但我不喜欢GUI上下文切换。 在调试时,我喜欢我的IDE保持不变; 在Windows上我使用SlickEdit for IDE和Visual Studio Debugger进行调试。 所以从3:Insight,DDD和SlickEdit,Insight是我的第一选择,我使用它> 95%的时间,命令行gdb和DDD组成另外5%。 如果我有机会,我会在某个时候评估Eclipse,我的工作PC似乎没有足够的RAM(仅1GB)来合理地运行Eclipse。

我也听过很多关于TotalView的赞誉,包括在求职面试中的第一手资料。 我在2008年底获得了我们公司的评估,但最终我们没有继续,因为gdb足以满足我们的需求; 它是免费的,无处不在。

===============>>#26 票数:0

我正在寻找一个调试器来逐步运行一个正在运行的程序。 说:附上。 该程序是用eclipse构建的,但由于可能有一些多线程的障碍,没有喜欢的源文件。 随你。

我对NetBeans非常满意。

  • [debug] from menu - > Attach Deugger ...
  • 因为进程选择了一个进行调试
  • 作为项目[新项目]

现在窗户不见了,你什么都看不见。 脱离过程。 阅读广场“停止”有帮助。

  • 从项目导入源,例如文件夹。 ” ... / MyProject的/ src目录
  • 现在它出现在您的项目中,您可以设置断点。
  • 再次ttach调试器
  • 选择了调试过程。
  • 如果programm到达下一个断点,调试器应该停止。

转到[窗口] - > [调试] - >您的窗口是否会变得舒适。

===============>>#27 票数:0

Geany的最新版本支持它(仅在Linux上)

===============>>#28 票数:0

使用www.zero-bugs.com/零调试器,它需要gcc支持C ++ 0x

  ask by HappyDude translate from so

未解决问题?本站智能推荐:

1回复

GDB奇怪的行为 - Linux

Yeasterday我对我的archlinux做了很大的更新(两个月后)。 我更新了用于开发的GCC,GDB和QtCreator。 今天我注意到了gdb的奇怪行为。 如果我第一次启动调试器(重新启动计算机后),它可以工作。 但是在调试器停止之后,或者只是调试的应用程序停止了,它将不
1回复

我可以将Linux程序设置为由gdb启动并附加吗?

在Windows上,我可以设置globalflag来将程序的启动与调试器相关联,因此,即使我从脚本中调用程序,调试器也会启动我的程序,并且能够在某些代码行处中断。 那么如何在Linux上使用gdb做到这一点呢? 例如,我已经用gcc的-g选项编译了/home/my/a.out,希望谁调用
1回复

使用gdb调试linux守护进程的初始启动

我想调试一个守护进程的初始启动,该守护进程是作为linux下的服务启动的(centos 7)。 我的服务启动为:“service mydaemon start” 我知道将gdb附加到正在运行的进程,但不幸的是,这种技术太慢了,mydaemon的初始执行很重要。 mydaemon
1回复

如何在Eclipse中启动gdb调试之前运行linux脚本

在Eclipse中启动gdb调试之前,如何运行命令? 实际上我想执行几个脚本来设置环境变量(导出变量)并执行一堆其他程序,然后从eclipse启动gdb进程来调试我的程序。 我尝试在调试器选项卡选项中执行以下操作: 但是我得到了eclipse无法执行上述语句中给出的gdb的错
2回复

在gdb / Ubuntu 14.04.4 LTS中加载dl-debug.c

当我使用gdb xxx ,在加载时,这是结果: 很多,我该如何解决? 我在互联网上搜索过这个,但所有的答案都不是解决方案。 有些人可能会建议使用apt-get source glibc或apt-get install libc-source ,但是没有帮助。 我试图找到/u
10回复

Linux C ++调试器

我正在寻找完美的Linux C ++调试器。 我不指望成功,但搜索应该提供信息。 我是一个非常有能力的gdb用户,但STL和Boost很容易破坏我的调试技巧。 这并不是说我无法进入数据结构的内部,而是需要很长时间才能找到另一种方式(“当有疑问时,将其打印出来”)。 gdb的宏语言
3回复

如何使用Eclipse从Windows调试Linux C ++程序?

我使用无头(即无屏幕)远程ubuntu服务器x64来开发C ++应用程序(也没有UI)。 我想方便地(IDE喜欢,而不是命令行)从windows(7/64)调试这个程序,如果可能的话用Eclipse。 我在两台机器上都有一个Windows共享和完全root访问权限。 到目前为止,我
1回复

使用gdb调试chroot程序

我处于必须调试的程序必须在chroot环境中运行的情况。 现在,我已经在另一个根目录中安装了gdb并复制了源代码,这可以用于基本设置,但不是很方便,因为每次更改和重新编译时都必须重新同步源代码,并且必须复制在我所有的gdb设置上,等等。 有什么方法可以在正常环境中运行调试器,以调试在ch
2回复

GDB找不到源文件

我将GDB与“ Open On-Chip Debugger”项目一起使用,以调试用于远程MIP目标的交叉编译项目,并且由于某些原因,GDB无法找到源文件。 在这里,我在目标elf文件上调用GDB。 development @ ubuntu:〜/ vitessesdk / CEServic
1回复

从gdb修改全局变量

使用GDB,我正在尝试修改全局变量。 全局变量是在共享库中定义的-不确定是否有任何区别。 但是我收到一个错误“无法访问成员”。 这是我在做什么: 有什么想法为什么会失败吗?