问题描述
|
我知道这很像异端,但是我根本看不出在日常调试(而不是高级转储和日志记录调试)中使用gdb会比可视调试器更有效。
我来自.Net(热爱环境,讨厌这种心态)的背景,在过去的几年中,他们转移到了PHP&C ++。
我现在正在使用Eclipse在C ++中开发一个项目,并且讨厌编辑器有多沉重,因此我已移至Textmate。
但是调试太不舒服了。
我正在使用gdb,但是错过了可视化调试,它是如此简单,高效。
然而,每个人都说-学习正确使用gdb!
所以我问-如何正确有效地使用gdb?
解决方法
对于我来说,我总是使用gdb的TUI模式。从gdb手册:
gdb文本用户界面(TUI)是
终端接口使用
curses库以显示源
文件,程序集输出,程序
寄存器和gdb命令分开
文字视窗。 TUI模式是
仅在以下平台上受支持
适用于curses库的版本
可用。
它为gdb带来了一些可视化调试,对我来说足够了。我通常在常规命令行模式下启动gdb,观察回溯并在其中设置断点。当我想查看源代码时,我会使用键绑定C-x C-a切换到TUI模式,然后再切换回以查看回溯。这是内置的即用型gdb功能。您不需要任何其他软件,例如KDevelop或Emacs即可使用它。
, 您可以将gdb与KDevelop等IDE一起使用。它具有可视界面,因此很有帮助。
或带有Emacs的GDB,它几乎可以轻松完成精美的图形调试器可以做的所有事情。
只需添加一下,您就可以看一下这篇文章。它讲述了一些不错的技巧。
, 您可以尝试qt-creatror,它也具有简单易用的GDB可视界面。
, DDD呢?
, 我将netbeans用于C ++。它与gdb集成,并提供可视化调试。它不像Visual Studio那样好,但是已经接近了。它比Eclipse更干净,更轻。但是,要在Windows上进行所有设置并不容易。如果您需要,我可以在这里提供一些指示
, 也许gdb甚至更有效率。当难以调试以重现诸如特殊死锁之类的错误时,它可以利用核心转储。它还可以调试正在运行的进程。其他功能(例如条件断点)和最近开发的反向执行也使gdb脱颖而出。
免责声明:我不使用可视调试器,并且我不确定它们是否支持以上内容。