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

5
GUI调试器(如Eclipse)和命令行调试器(如gdb)有哪些优点?工业界是否使用命令行调试器?如果是,人们在什么情况下使用命令行调试器?

1
你可以为终端调试器编写前端界面(这是有用的,请参见答案)。反之则不成立。我个人在使用gdb时的偏好是使用命令行(或者有时使用emacs前端界面),因为你很快就会习惯它。 - Alexandre C.
3个回答

3

我通常使用gdb,但我能想到的一些优点是:

  • 作为命令行工具,调试远程系统上的二进制文件就像打开ssh连接一样容易。
  • 良好的脚本支持和在每个断点上运行多个命令的能力(请参阅continue关键字)
  • 启动时间更短,开发周期更快。
  • 可复制和定义函数的命令,让您更轻松地重复常见命令
  • gdb还可以使用明确定义的协议进行通信,因此您可以调试运行在许多不同硬件和内核上的代码。
  • 在长期运行中,输入简短的命令比绕过GUI更短且更有效率(我个人的看法)。

但是,如果您在一个之前从未使用过的系统或运行时旁边,则使用可视化调试器可能更容易上手。此外,如果您使用IDE,则将调试器与IDE紧密集成可以大大提高生产力。

可视化调试器和命令行调试器不必完全分离,例如DDD等工具可以为gdb提供可视化界面。(我不使用DDD,因为它感觉非常笨拙和过时。但它确实存在。XCode也使用gdb进行调试支持)


2

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

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

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


你提到命令行不需要源代码,能否详细说明一下? - foboi1122
@foboi1122,即使程序没有源代码,它们也可以工作。许多图形化调试器在这种情况下也可以工作,但我更喜欢使用CLI调试器。 - osgx

1

基本上,根据调试器的显示进行有意义的比较是不可能的。喜欢命令行的人可能会使用文本模式、命令驱动的调试器。喜欢图形用户界面的人可能会使用图形化、菜单驱动的调试器。

几乎唯一需要真正强烈技术动机去选择其中一种的情况是当你在调试窗口系统时。例如,如果你正在尝试调试 X 服务器本身,那么依赖于功能性 X 服务器的调试器就不能很好地工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接