Linux是否有C ++ gdb GUI?

时间:2020-03-05 18:57:40  来源:igfitidea点击:

简要地说:有没有人知道gdb的GUI可以将它带到与我们在Visual C ++的最新版本中相当或者接近的功能集?

详细信息:作为一个在Windows上花费了大量时间的人,每当我必须在Linux中编写C ++时,我发现的最大绊脚石之一就是,使用命令行gdb进行调试比将其花费的时间长几倍。 Visual Studio,实践似乎并没有变得更好。有些事情更容易或者更快速地以图形方式表达。

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

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

如果不存在这样的程序,那么我想听听人们使用程序的经验,这些程序至少满足某些要点。
有人有什么建议吗?

编辑:
列出各种可能性非常好,我会尽力而为,但是如果我们可以在回复中加入以下内容,它会更加有用:
(a)我们是否实际使用过此GUI,如果使用过,则对它有什么正面/负面的反馈。
(b)如果我们知道/不支持上述哪些功能

列表很容易获得,像这样的站点很棒,因为我们可以了解人们在应用程序方面的个人经历。

解决方案

回答

我们不会找到任何可以与Visual Studio调试器的原始功能竞争的GDB覆盖层。它实在太强大了,而且在IDE中集成得太好了。

对于Linux替代方案,如果我们需要免费软件,请尝试DDD。

回答

g ++产生的调试信息在很大程度上会限制可以逐步执行的操作。 Emacs提供了gdb的界面,我们可以通过工具栏/菜单对其进行控制,并在单独的窗口中显示数据,也可以直接键入gdb命令。 Eclipse的CDT提供了类似的工具。我听说过Anjuta和Code :: Blocks,但从未使用过它们。

回答

签出Eclipse CDT项目。它是面向Eclipse的面向C / C ++开发的插件,并且具有相当丰富的调试视角(在后台使用GDB)。它可在多种平台上使用。

回答

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

回答

KDevelop运作良好。

回答

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

回答

gdb -tui可以正常工作,如果我们需要GUI风格的东西,但仍基于字符。

回答

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

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

回答

作为熟悉Visual Studio的人,我已经研究了几种开源IDE来替代它,而KDevelop成为最接近IMO的对象,Visual C ++使用者可以坐下来开始使用它。当我们在调试模式下运行项目时,它使用gdb,但kdevelop几乎可以处理整个事情,因此我们不必知道它是gdb。我们只是单步执行或者将监视分配给变量。

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

回答

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尝试了几种不同的guis,发现DDD更好。
尽管我无法评论Linux的其他非gdb产品,但我在其他平台上使用了许多其他调试器。

gdb可以完成愿望清单中的大部分工作。 DDD为他们提供了更好的选择。例如,线程切换变得更简单。设置断点非常简单。

如果我们想做一些晦涩难懂的事情,还可以得到一个cli窗口。

DDD的一项功能比我使用的任何其他调试器都要出色,它是数据"绘图"。这使我们可以将结构,对象和内存显示和排列为可拖动的框。双击指针将打开已取消引用的数据,并通过可视链接返回到父级。

回答

我使用了KDbg(仅在KDE下有效)。

回答

我们是否使用cygwin gdb尝试了gdb -w。
假定它具有一个运行良好的Windows界面。

我发现的唯一问题是,在我现有的计算机上,直到安装ddd后,它才以这种方式运行。我怀疑它需要在安装ddd时安装的tcltk。

回答

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

GDB Emacs前端

回答

我们没有提到使用Windows还是UNIX。

在UNIX系统上,KDevelop很好,但是我使用KDbg是因为它易于使用,并且还可以与未在KDevelop中开发的应用一起使用。

Eclipse在两个平台上都很好。

在Windows上,有一个名为Wascana Desktop Developer的出色软件包,它是Eclipse CDT和MinGW的所有软件包,都进行了很好的打包和预配置,以最大程度地减少痛苦。对于在Windows上开发GNU代码,这是我发现的最好的东西。

我已经使用了所有这些调试器,但没有一个比MS Dev Studio更好。 Eclipse / Wascana可能是最接近的,但它确实有局限性,例如我们无法进入DLL,并且在检查变量方面做得不好。

回答

我讨厌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似乎也占用了很多空间并且像狗一样奔跑。

回答

我使用cgdb,简单实用

回答

如果要在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足以满足我们的需求,我们没有继续进行。它是免费的并且无处不在。

回答

Qt Creator看起来不错。一位同事向我展示了一种进行调试的方法:

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

在调试我已经编译的应用程序时,这似乎要花很多功夫,但这是值得的。调试器以类似于Visual Studio的方式显示线程,堆栈和局部变量,甚至使用许多相同的键盘快捷键。看起来至少可以很好地处理模板,至少是std :: string和std :: map。添加到现有进程和核心转储的文件似乎受到支持,尽管我尚未对其进行测试。

请记住,我用了不到一个小时的时间,但到目前为止给我留下了深刻的印象。

回答

如今,Linux上的Qt Creator与C ++的Windows上的Visual Studio无疑可以相提并论。我什至会在调试器方面说得更好。