221

简而言之:是否有人知道 gdb 的 GUI 可以使其与您在最新版本的 Visual C++ 中获得的功能集相当或接近?

详细说明:作为一个在 Windows 中花费大量时间进行编程的人,每当我必须在 Linux 中编写 C++ 代码时,我发现的一个较大的绊脚石是使用命令行 gdb 调试任何东西所花费的时间比在Visual Studio,它似乎并没有通过实践变得更好。有些事情只是更容易或更快地以图形方式表达。

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

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

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

编辑:
列出可能性很好,我会尽我所能,但如果你能在你的回复中包括它会更有帮助:
(a)你是否实际使用过这个 GUI,如果是这样,您对此有什么正面/负面的反馈。
(b) 如果您知道,上面提到的哪些功能是/不支持的

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

4

28 回答 28

86

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

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

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

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

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

于 2008-09-17T02:28:17.177 回答
79

gdb -tui 如果你想要一些图形用户界面的东西,但仍然是基于字符的。

于 2008-09-17T02:08:37.457 回答
56

您不会发现任何覆盖 GDB 的东西可以与 Visual Studio 调试器的原始功能相媲美。它太强大了,而且它在 IDE 中集成得也很好。

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

于 2008-09-17T01:45:42.397 回答
49

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

更新:新链接。

于 2011-06-01T05:43:20.873 回答
32

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

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

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

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

于 2010-08-24T13:40:34.567 回答
30

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

一旦你真正习惯了 GDB,它就很棒。在愤怒中使用它,你会变得非常熟练。我可以毫不费力地在一个程序周围做你列出的所有事情。在我精通之前,确实需要一个月左右的时间才能通过 SSH 链接连接到远程服务器。我永远不会回去。

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

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

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

您可以使用 Eclipse,但它的重量很重,而且与我共事过的许多经验丰富的 Unix 人员(包括我在内)不太关心它的界面,这不仅是 STFU,而且不会妨碍您。Eclipse 似乎也占用了很多空间,像狗一样跑。

于 2009-02-02T01:29:55.360 回答
27

我用cgdb,简单实用

于 2009-07-15T11:54:53.840 回答
16

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

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

于 2008-09-17T02:10:07.547 回答
8

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

于 2008-09-17T01:48:54.680 回答
7

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

于 2008-09-17T01:50:48.623 回答
7

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

GDB Emacs 前端

于 2009-01-03T15:49:44.707 回答
6

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

于 2008-10-25T19:01:28.570 回答
5

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

gdb 完成了您愿望清单中的大部分工作。DDD 对他们提出了更好的要求。例如,线程切换变得更简单。设置断点与您期望的一样简单。

如果您想做一些晦涩的事情,您还会获得一个 cli 窗口。

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

于 2008-09-23T12:10:04.580 回答
5

Qt Creator-on-Linux 现在肯定与 Visual Studio-on-Windows for C++ 相提并论。我什至会在调试器方面说得更好。

于 2010-11-20T15:47:24.847 回答
5

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

于 2013-11-13T00:50:01.010 回答
3

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

于 2008-09-17T01:47:34.403 回答
3

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

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

于 2008-09-17T02:16:58.997 回答
3

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

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

Eclipse在两个平台上都很好。

在 Windows 上,有一个名为Wascana Desktop Developer的很棒的包,它是 Eclipse CDT 和 MinGW,它们全部打包并预先配置好,以最大限度地减少痛苦。这是我在 Windows 上开发 GNU 代码时发现的最好的东西。

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

于 2009-02-02T01:01:44.340 回答
3

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

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

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

于 2015-04-07T11:56:54.527 回答
2

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

于 2011-11-24T11:15:01.287 回答
2

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

于 2014-05-27T23:08:52.583 回答
1

KDevelop 工作得很好。

于 2008-09-17T01:53:34.530 回答
1

您是否尝试过使用 cygwin gdb 的 gdb -w。它应该有一个运行良好的 Windows 界面。

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

于 2009-01-02T01:52:23.003 回答
0

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

于 2008-09-17T02:08:21.890 回答
0

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

于 2009-12-03T20:35:23.237 回答
0

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

我还听到了很多对 TotalView 的赞誉,包括在工作面试中的第一手。我在 2008 年底获得了我们公司的评估,但最后我们没有继续,因为 gdb 足以满足我们的需求;它是免费且无处不在的。

于 2009-12-03T20:53:12.263 回答
0

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

于 2012-02-16T07:21:52.200 回答
0

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

我对 NetBeans 非常满意。

  • [调试] 从菜单 -> 附加调试器...
  • 由于进程选择了要调试的那个
  • 作为项目[新项目]

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

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

转到 [window] -> [Debugging] -> 你的窗口会变得舒适吗?

于 2016-07-04T19:41:26.710 回答