是否有适用于Linux的C ++ gdb GUI?

是否有适用于Linux的C ++ gdb GUI?

Is there a C++ gdb GUI for Linux?

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

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

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

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

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

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

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


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

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

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

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

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

  • 与CDT调试器连接,第2部分:使用Eclipse CDT和MI访问gdb
  • CDT调试教程

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


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

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


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

更新:新链接。


我不喜欢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也似乎占用了大量空间并像狗一样运行。


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

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

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

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


我使用cgdb,简单而有用


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

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


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


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

GDB Emacs前端


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


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


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


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

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

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

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


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


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

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


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


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

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

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

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

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


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

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

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


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


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


KDevelop很好用。


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

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


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

我对NetBeans非常满意。

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

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

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

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


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


在过去的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足以满足我们的需求;它是免费的,无处不在。


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


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


推荐阅读