简单地说:有没有人知道gdb的GUI可以与最新版本的Visual c++中的特性集相提并论或接近?

详细说明:作为一个在Windows上花了大量时间编程的人,每当我必须在Linux中编写c++代码时,我发现的一个较大的绊脚石是,使用命令行gdb调试任何东西所花费的时间比在Visual Studio中长几倍,而且随着练习,它似乎并没有变得更好。有些东西用图形表示更容易或更快。

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

Handles all the basics like stepping over & into code, watch variables and breakpoints Understands and can display the contents of complex & nested C++ data types Doesn't get confused by and preferably can intelligently step through templated code and data structures while displaying relevant information such as the parameter types Can handle threaded applications and switch between different threads to step through or view the state of Can handle attaching to an already-started process or reading a core dump, in addition to starting the program up in gdb

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

编辑: 列出这些可能性很好,我也会尽我所能,但如果你能在回答中包括以下内容,那就更有帮助了: (a)你是否实际使用过这个图形用户界面,如果使用过,你对它有什么积极/消极的反馈。 (b)如果你知道,上述哪些功能是受支持的或不受支持的

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


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

对于Linux的替代品,如果您喜欢自由软件,可以尝试DDD。


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


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


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


KDevelop工作得很好。


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


gdb -tui可以工作,如果你想要一些类似gui的东西,但仍然是基于字符的。


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

此外,如果你不是广发银行的合伙人,而且不介意支付一点钱,那么我会试试TotalView。它有一点陡峭的学习曲线(它绝对可以更直观),但它是我在任何平台上使用过的最好的c++调试器,并且可以扩展以自定义方式内测你的对象(因此允许你将STL列表视为一个实际的对象列表,而不是一堆令人困惑的内部数据成员,等等)。


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

不幸的是,它仍然不如Visual Studio调试器好。


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尝试了几个不同的gui,发现DDD是其中更好的一个。 虽然我不能评论linux上的其他非gdb产品,但我已经在其他平台上使用了许多其他调试器。

GDB可以完成您愿望清单中的大部分工作。DDD让他们看起来更漂亮。例如,线程切换变得更加简单。设置断点就像您期望的那样简单。

如果你想做一些模糊的事情,你也可以得到一个cli窗口。

DDD比我使用过的任何其他调试器都突出的一个特性是数据“绘图”。这允许你显示和安排结构,对象和内存作为拖拽框。双击一个指针将打开被解除引用的数据,并带有指向父节点的可视链接。


我使用KDbg(只适用于KDE)。


你尝试过gdb -w和cygwin gdb吗? 它应该有一个windows界面,工作得相当好。

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


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

GDB Emacs Frontend


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

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

Eclipse在这两个平台上都很好。

在Windows上,有一个叫做Wascana Desktop Developer的很棒的包,它是Eclipse CDT和MinGW,它们都经过了很好的打包和预配置,使痛苦最小化。这是我发现的在Windows上开发GNU代码最好的工具。

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


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

一旦您真正习惯了GDB,它就非常棒。在生气的时候经常使用它,你会变得非常熟练。我可以轻松地在程序中完成您列出的所有事情。我确实花了一个月左右的时间才熟练地连接到远程服务器。但我永远不会回去。

DDD功能非常强大,但也有很多bug。我发现当它收到来自GDB的消息说它不懂时,它经常会死机。它很好,因为它有一个gdb接口窗口,所以你可以看到正在发生什么,也可以直接与gdb交互。在我的环境中,DDD不能在远程X会话上使用(这是一个真正的问题,因为当我做Unix开发时,我坐在瘦客户机上),因此出于某种原因,它对我来说是不合适的。

KDevelop遵循典型的KDE风格,向用户公开一切。在KDevelop中调试非KDevelop程序时,我也没有任何运气。

Gnat Programming Studio (GPS)实际上是一个非常好的GDB前端。它不只是管理Ada项目,所以如果你需要调试器,它值得一试。

你可以使用Eclipse,但它的重量相当大,我所共事过的许多经验丰富的Unix人员(包括我在内)都不太关心它的界面,它不会只是STFU,也不会给你带来麻烦。Eclipse似乎也占用了很多空间,运行起来像狗一样。


我使用cgdb,简单实用


如果您正在Visual Studio下寻找gdb,那么请检查WinGDB。


In the last 15 months I use insight (came with FC6). It is not great, it is written in Tcl/Tk, but it is simple and useful. DDD is of similar quality / utility, but somewhat harder to use (various GUI gotchas and omissions). I also tried to integrate gdb with my IDE, SlickEdit. It worked OK (I played some 4 hours with it), but I did not like the GUI context switches. I like my IDE to remain unchanged while I am debugging; on Windows I use SlickEdit for IDE and Visual Studio Debugger for debugging. So from the 3: Insight, DDD and SlickEdit, Insight is my 1st choice, I use it >95% of the time, command-line gdb and DDD make up the other 5%. If I get the chance, I will eval Eclipse at some point, my work PC does not seem to have enough RAM (1GB only) to run Eclipse reasonably well.

我也听到了很多对TotalView的赞美,包括在一次工作面试中。我在2008年底获得了对我们公司的评估,但最终我们没有继续进行,因为gdb足够满足我们的需求;而且它是免费的,无处不在。


Qt Creator似乎是个好东西。一位同事向我展示了一种调试的方法:

Create a new project, "Import of Makefile-based Project". Point it to your root project folder (it will index sources under it, and it is impressively fast). Go to project settings and add a run configuration, then specify the executable you want to debug, and its arguments. Qt Creator seems to insist on building your project before debugging it. If you don't want that, or don't use make, just go to projects -> build (Left panel), then, on the right panel in "Build Steps", remove all the steps, including the step by default when you created the project.

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

请记住,我现在使用它不到一个小时,但迄今为止我印象深刻。


Qt Creator-on-Linux当然可以与Visual Studio-on-Windows for c++媲美。我甚至认为调试器方面更好。


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

更新:新链接。


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


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


在这个列表中遗漏了一个非常高效的IDE: Netbeans(我在许多C/ c++项目中使用过它,没有任何问题)。


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


你看过DS-5调试器吗?

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

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


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

我用NetBeans很舒服。

[debug] from menu ->附加调试器… 当进程选择要调试的程序时 As project[新项目]

现在窗户消失了,你什么也看不见。脱离这个过程。Read方形的“Stop”会有所帮助。

从项目中导入源代码,例如文件夹。“……/ MyProject / src 现在它出现在您的项目中,您可以设置断点。 同样是ttach调试器 选择要调试的流程。 如果程序到达下一个断点,调试器应该停止。

打开[window] -> [Debugging] ->您的窗口是否使您感到舒适。