如何使用gdb达到与使用可视化调试器相同的效率水平
How can you reach the same level of efficiency using gdb as you do with a visual debugger?
我知道这就像异端,但我根本看不出在日常调试中(而不是高级转储和日志调试)使用gdb如何比可视化调试器更高效。
我来自.Net(热爱环境讨厌心态)的背景,在过去的几年里,我转向了PHP&C++我现在正在使用Eclipse用C++开发一个项目,我讨厌编辑器有多重,所以我转到了Textmate。但是调试太不舒服了。我使用的是gdb,但错过了可视化调试,它更容易、更高效。
然而,每个人都说——学会正确使用gdb!所以我在问-如何正确使用gdb&高效?
您可以将gdb与类似KDevelop的IDE一起使用。它有一个视觉界面,所以有帮助
或者GDB和Emacs,它几乎可以轻松地完成高级图形调试器所能做的一切。
补充一下,您可以查看这篇文章。它告诉一些不错的技巧。
您可以尝试qt-creatror,它也有漂亮而简单的GDB可视化界面。
DDD呢?
对我来说,我总是使用gdb的TUI模式。来自gdb手册:
gdb文本用户界面(TUI)是一个使用curses库以显示源文件、程序集输出、程序单独的寄存器和gdb命令文本窗口。TUI模式为仅在以下平台上支持curses库的合适版本可用。
它为gdb带来了一些可视化调试,这对我来说已经足够了。我通常以常规命令行模式启动gdb,观察回溯并在其中设置断点。当我想查看源代码时,我切换到具有键绑定C-x-C-a的TUI模式,然后切换回看回溯。这是gdb的内置即用功能。您不需要任何其他软件,如KDevelop或Emacs来使用它。
我将netbeans用于C++。它与gdb集成,并为您提供可视化调试。它不如Visual Studio好,但它很接近。它比Eclipse更干净、更轻。不过,在Windows上设置所有内容并不容易。如果您需要,我可以在那里提供一些指针
也许gdb更高效。它可以在调试时使用核心转储来重现特殊的死锁等错误。它还可以调试正在运行的进程。其他特性,如条件断点和最近开发的反向执行,也使gdb脱颖而出。
免责声明:我不使用可视化调试器,我不太确定他们是否支持以上内容。
- 正在VS调试器中监视映射条目
- 为什么我的 VS 代码调试器在我的C++代码周围弹跳?
- 带有 GDB 调试器的 VS 代码内存视图
- 为什么调试器引发"read access violation. this was nullptr"异常?
- VS2017调试器:没有地址,可能是由于编译器优化
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- 使用 Windows 10 和 MINGW 编译器在 VS Code 上使用 gdb 调试器进行调试时出错
- 如何在可视化代码中生成用于 c++ 开发的调试器?
- 为什么我的程序无法在GDB在线编译器/调试器或Visual Studio C++ 2019中运行
- Popen使Qt调试器崩溃
- 附加调试器并以编程方式获取变量地址 Visual Studio
- 在集成终端上运行vscode lldb调试器时,如何获取程序的输出?
- 宏使枚举调试器感知?
- Eclipse-C++-调试器立即终止
- 标识gdb调试器中符号的源文件名
- Visual Studio图形调试器引发读取访问冲突异常
- 如何修复使用VScode调试器gcc调试时的"找不到文件"错误
- 如果您在C++上有 Makefile 项目,如何在 VScode 中"fix"调试器?
- 为什么调试器总是跳过此程序中的一行?
- 如何使用gdb达到与使用可视化调试器相同的效率水平