简而言之:有没有人知道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前端
DDD是gdb的GNU前端:http://www.gnu.org/software/ddd/
我使用KDbg(仅在KDE下工作).
我为gdb尝试了几种不同的guis,发现DDD更好。虽然我无法对Linux的其他非gdb产品发表评论,但我在其他平台上使用了许多其他调试器。
gdb可以完成您希望清单中的大部分工作。DDD为他们提供了更好的选择。例如,线程切换变得更简单。设置断点非常简单。
如果您想做一些晦涩难懂的事情,还可以得到一个cli窗口。
DDD的一项功能比我使用的任何其他调试器都要出色,它是数据“绘图”。这使您可以将结构,对象和内存显示和排列为可拖动的框。双击指针将打开已取消引用的数据,并通过可视链接返回到父级。
如今,Qt Creator-on-Linux肯定与Visual Studio-on-Windows for C++相当.我甚至会在调试器方面说得更好.
这个列表中缺少一个IDE,效率很高(我在很多C/C++项目中都没有使用它):Netbeans.