C++ GUI调试器和终端调试器之间的区别
在Eclipse中,GUI调试器有哪些优点?使用命令行调试器(如gdb)有哪些优点?工业界是否使用命令行调试器?如果是这样,人们在什么情况下使用命令行调试器?命令行调试器有助于调试远程系统(尤其是在连接速度较慢时),它也适用于低性能系统或没有Xserver/graphic卡的系统。CLI调试器还用于快速分析或核心转储和SIGSEGVs(启动速度更快)。命令行调试器更具便携性,几乎可以安装在每个系统上(也可以轻松安装,甚至可以从网络/闪存驱动器启动) 我认为命令行可以用于没有源代码的程序,图形调试器更适合于具有复杂数据结构/类的项目C++ GUI调试器和终端调试器之间的区别,c++,debugging,C++,Debugging,在Eclipse中,GUI调试器有哪些优点?使用命令行调试器(如gdb)有哪些优点?工业界是否使用命令行调试器?如果是这样,人们在什么情况下使用命令行调试器?命令行调试器有助于调试远程系统(尤其是在连接速度较慢时),它也适用于低性能系统或没有Xserver/graphic卡的系统。CLI调试器还用于快速分析或核心转储和SIGSEGVs(启动速度更快)。命令行调试器更具便携性,几乎可以安装在每个系统上(也可以轻松安装,甚至可以从网络/闪存驱动器启动) 我认为命令行可以用于没有源代码的程序,图形调试
另一种情况是命令行调试器更容易自动化,例如,我有一个shell脚本,它使用gdb对程序进行完整的调用图记录。自动执行图形调试器是非常困难的。我通常使用gdb,但我能想到的一些好处是:
- 作为命令行,在远程系统上调试二进制文件就像打开ssh连接一样简单
- 强大的脚本支持,并且能够在每个断点上运行许多命令(请参阅
关键字)continue
- 启动时间更短,开发周期更快
- 复制可复制的命令和可定义的函数,使您可以更轻松地重复常用命令(&P)
- gdb还讲一个定义良好的协议,因此您可以调试运行在许多模糊硬件和内核上的代码
- 从长远来看,键入简短的命令比使用GUI更短、更有效(我认为)
可视化调试器和命令行调试器不必完全分开,gdb有可视化前端,比如DDD。(不过我不使用DDD,因为它感觉非常笨拙和过时。尽管如此,它确实存在。XCode还包装了gdb以支持调试)基本上不可能根据调试器的显示进行有意义的比较。喜欢命令行的人可能会使用文本模式,命令驱动的调试器。喜欢GUI的人可能会使用图形化、菜单驱动的调试器
几乎只有在调试窗口系统时,才会有真正强烈的技术动机。例如,如果您试图调试的是X服务器本身,则使用依赖于具有功能的X服务器的调试器不会很好地工作。您可以为终端调试器提供前端(它们有自己的用途,请参阅答案)。反之亦然。使用gdb时,我个人的喜好是使用命令行(有时也使用emacs前端),因为您很快就会习惯它。您提到命令行不需要源代码。你能详细解释一下吗?@foboi1122,即使没有该程序的来源,它们也可以工作。许多图形调试器也可以在这种情况下工作,但我更喜欢在这种情况下使用CLI调试器。