Linux是否有C ++ gdb GUI?[关闭]


210

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

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

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

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

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

编辑:
列出可能性是巨大的,我会尽我所能,但是如果您可以在响应中包括它,它将更加有帮助:
(a)是否实际使用了此GUI,如果可以, ,您对此有何正面/负面反馈。
(b)如果您知道/不支持上述哪些功能

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


21
+1表示“这样的网站很棒,因为您可以了解人们的个人经历。” 如今,太多人只是在做列表转储,恕我直言,这完全是关键。
kizzx2 2010年



请在此处查看以下gdb前端列表:sourceware.org/gdb/wiki/GDB%20Front%20Ends,并向列表中的第一个射击。由于基于浏览器:gdbgui.com,因此看起来非常有前途且现代,并且是跨平台的。
加布里埃尔·斯台普斯

Answers:


55

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

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


2
WinDBG远远优于Visual Studio提供的功能。Visual Studio调试器与WinDBG位于同一体系结构之上。话虽如此,GDB与Windbg相比没有什么可问的。比DDD更好的图形调试器会很棒。Eclipse CDT是一个很好的选择。我认为这里有一个KDE UI
bigmonachus 2012年

114
哦,看。提出索赔的答案而无需完全备份。我也感到奇怪,没有回答问题的答案被接受了。
替代方式

3
对于来这里寻求真正答案的任何人,请知道ddd是垃圾。我发现适用于Linux的最佳调试器GUI是IDA,它不是免费软件。
bkconrad

1
尽可能回答问题,或者什么也不要说。两者都使用过后,Visual Studio的功能更加丰富,但是DDD足够好,我不会错过VS。可悲的是,DDD正在显示其年龄。
艾伦·德·斯梅特

6
该帖子需要更新/改进。Qt Creator很棒,与Visual Studio相当。
vharron 2014年

85

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

如果您不熟悉使用基于Eclipse的IDE,那么GUI将需要一些时间来习惯。但是,一旦您了解了Eclipse特有的GUI想法(例如,透视图),使用该工具就会成为一种不错的体验。

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

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

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


10
支持读取核心转储。(它被称为事后调试器。)
Josh Kelley

我在Eclipse CDT调试方面比在Visual Studios中拥有更好的经验。不过,我没有给MSVC太多机会。
notlesh

3
我认为QtCreator应该与Eclipse一起提及,因为它具有可比性。
不知情的

78

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


45
您也可以在gdb中使用“-”命令进入TUI(文本用户界面)模式。返回命令提示符是Ctrl-X Ctrl-A。在TUI模式下,向上,向下,向左和向右移动源。使用Ctrl-P,Ctrl-N,Ctrl-F和Ctrl-B来浏览命令行历史记录。
本·康比

这正是我想要的。gdb命令行的功能以及一些有用的视图,这些视图会在我四处移动时更新。
凯文·考克斯

7
立体字上的.gdbinit给您一个非常令人印象深刻的基于字符的GUI,并带有颜色:github.com/cyrus-and/gdb-dashboard
cs01 2016年

我非常喜欢gdb-dashboard,但也必须提及voltron
不知情的

3
@Barry谢谢。对于任何好奇的人,这里是一个链接:github.com/cs01/gdbgui。它具有类似于DDD的数据结构显示,一种客户端/服务器体系结构,可轻松调试远程计算机而无需进行X转发,并具有探索复杂变量的能力,等等
。– cs01

47

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

更新:新链接。


绝对 很棒,还受apt支持:“ apt-get install nemiver”。我唯一的疑问是由于“未找到gconf-2.0软件包”而导致从回购构建失败。
伊万斯

界面非常清晰且易于阅读,但使用界面功能v0.9.6时有时会崩溃。它还接受调试的应用程序参数,我仍然不能让ddd做。
Aquarius Power

也可在Fedora 30上使用(至少)。我只是碰巧碰到这个问题而已。
user3236841

31

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

  • 创建一个新的项目,“导入基于Makefile的项目”。
  • 将其指向您的根项目文件夹(它将为它下面的源建立索引,而且速度很快)。
  • 转到项目设置并添加运行配置,然后指定要调试的可执行文件及其参数。
  • Qt Creator似乎坚持在调试之前构建项目。如果您不想要或不使用make,只需转到项目->构建(左侧面板),然后在右侧面板的“构建步骤”中删除所有步骤,包括默认情况下的步骤您创建了项目。

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

请记住,我使用它已经不到一个小时了,但是到目前为止,我印象深刻。


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


2
只是想插入我的项目gdbgui(github.com/cs01/gdbgui)。它是一种客户机/服务器体系结构,因此可以很好地调试远程计算机,而无需X会话。它还具有一个可以直接与GDB进行交互的终端,并且具有类似于DDD的视觉效果以显示数据结构。
cs01

根据经验与利弊进行比较。正是这个问题所需要的。ty
Heath Raftery


16

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

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


我根本无法让DDD在远程X上工作;刚在我的瘦客户机上崩溃并出现Xlib错误:(
Adam Hawes,

totalview看起来是可行的选择。我不认为DDD会比gdb curses界面更好。
deft_code

8

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




6

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


3
工具KDbg是局限于KDE。
nobar

这是真棒。我想知道这一直在哪里。
edmz

5

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

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

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

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


ddd是否可用于带有参数的程序?我无法通过它传递参数...
user3236841 19-10-18

如果我没记错的话,DDD可以为您提供直接进入GDB的控制台窗口。在GDB控制台中,您可以使用“ set args xyz abc”命令设置命令行参数。
安德鲁·埃奇科姆

5

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


5

此列表中缺少一个IDE,它非常有效(我在许多C / C ++项目中都使用了它,没有任何问题):Netbeans


我已经习惯了cgdb,现在我非常喜欢它,但是Netbeans是VS的伟大垫脚石。
zzxyz

3

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


3

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

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


3

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

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

在两个平台上都很好。

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

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


3

您是否曾经看过DS-5调试器

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

使用Eclipse在实际设备上调试Android应用程序时,我对该工具有很好的经验。





1

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

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




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



0

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

我对NetBeans非常满意。

  • 从菜单中[调试]->附加Deugger ...
  • 由于过程选择了一个进行调试
  • 作为项目[新项目]

现在,窗户消失了,您什么也看不到。脱离过程。Read Square的“停止”会有所帮助。

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.