GUI调试器和终端调试器之间的区别

时间:2011-02-17 17:36:18

标签: c++ debugging

Eclipse中的GUI调试器有哪些优点?使用命令行调试器(如gdb)有哪些优点?业界是否使用命令行调试程序?如果是这样,人们在什么情况下使用命令行调试器?

3 个答案:

答案 0 :(得分:2)

我通常使用gdb,但是我可以想到一些优势:

  • 作为命令行,在远程系统上调试二进制文件就像打开ssh连接一样简单。
  • 出色的脚本支持,以及每个断点运行多个命令的能力(请参阅continue关键字)
  • 启动时间短得多,开发周期更快。
  • 复制和放置命令以及可让您更轻松地重复常用命令的可定义函数
  • gdb也说明了一个明确定义的协议,因此你可以调试在很多不起眼的硬件和内核上运行的代码。
  • 从长远来看,键入短命令比使用GUI(在我看来)更短,效率更高。

但是,如果您在以前从未使用的系统或运行时旁边,那么使用可视化调试器可以更容易地从一开始就开始使用。此外,让您的调试器与您的IDE紧密集成(如果您使用它)可以大大提高工作效率。

可视调试器和命令行不必完全分离,gdb有可视前端,例如DDD。 (我不使用DDD,因为它感觉超级笨拙和过时。它确实存在.XCode也包装gdb用于调试支持)

答案 1 :(得分:1)

命令行调试器适用于调试远程系统(特别是在连接速度较慢时),它对于没有Xserver /图形卡的低性能系统或系统也很有用。 CLI调试器还用于快速分析或核心转储和SIGSEGV(它们启动速度更快)。命令行调试器更具可移植性,几乎安装在每个系统上(或者它们可以轻松安装,甚至可以从网络/闪存驱动器启动)

我认为命令行可以用于没有源代码的程序,图形化调试器更适合具有复杂数据结构/类的项目。

另一种情况是命令行调试器更容易自动化,例如我有一个shell脚本,它使用gdb执行程序的完整调用图记录。自动化图形调试器将非常困难。

答案 2 :(得分:0)

基于调试器的显示,基本上无法进行有意义的比较。喜欢命令行的人可能会使用文本模式,命令驱动的调试器。喜欢GUI的人可能会使用图形菜单驱动的调试器。

几乎唯一一次,如果你正在调试一个窗口系统,那么对一个或另一个的技术动力非常强烈。例如,如果您尝试调试的是 X服务器本身,那么使用依赖于具有功能X服务器的调试器将无法正常工作。