服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 面向软件工程师的八个优秀Linux调试器

面向软件工程师的八个优秀Linux调试器

2024-03-15 13:0651CTO Linux

调试器对于查找程序中的错误必不可少。在编译代码之前,调试器做一些基础的工作,试图找到代码中存在的问题,通常提供比编译器本身更多的信息。

译者 | 布加迪

审校 | 重楼

调试器对于查找程序中的错误必不可少。在编译代码之前,调试器做一些基础的工作,试图找到代码中存在的问题,通常提供比编译器本身更多的信息。作为一种开源生态系统,Linux拥有大量这种类型的应用程序,它们适用于几种不同的语言和处理架构。我们在本指南中将直接介绍Linux调试器。

1. GNU调试器(GDB)

GNU调试器又名GDB,是现代程序员可以使用的功能最强大的Linux调试器之一。它是一款强大的工具,拥有广泛的功能特征。GDB支持许多流行的编程语言,包括C、C++、Go和Rust。它还适用于许多不同的CPU体系结构,比如x86、x86-64、ARM、PowerPC、SPARC和MIPS。

面向软件工程师的八个优秀Linux调试器

使用以下命令安装GDB:

在基于Ubuntu/ Debian的发行版中:

sudo apt install gdb

在Fedora/RHEL发行版中:

sudo dnf install gdb

在基于Arch的发行版中:

sudo pacman -S gdb

只要您使用带有调试符号的GCC进行编译,就可以在程序运行时通过输入s逐步调试程序指令。输入r将通过调试器运行您的程序。要在程序加载的情况下启动GDB,只需在终端中输入gdb,后面跟程序路径。

进入调试器后,输入help将为您提供一个精心组织的目录,解释使用这个功能强大的调试器能执行的所有事情。

2. 数据显示调试器(DDD)

如果您不喜欢捣鼓命令,但仍然喜欢GDB所提供的功能特性,DDD为您提供了一个简单的图形化前端,它在点击式界面中提供了所有特性。它是典型的Linux调试器GUI。

面向软件工程师的八个优秀Linux调试器

用户界面可能看起来有点简陋,但其功能与任何其他调试器一样强大。这里的区别在于,您获得的是带有图形界面的GNU标志性调试器。

安装方法:

在基于Ubuntu/Debian的发行版中:

sudo apt install ddd

在Fedora/RHEL发行版中:

sudo dnf install ddd

在基于Arch的发行版中:

yay -S ddd

任何基于Arch的系统都必须使用AUR助手,因为DDD在其官方代码库中并不存在。或者,您可以在没有AUR助手的情况下在基于Arch的系统上安装DDD:

sudo pacman -S --needed base-devel
git clone https://aur.archlinux.org/ddd.git
cd ddd
makepkg -si

3. LLDB

LLDB是LLVM项目的一部分。LLVM套件由于其高效的工作流程而越来越受欢迎。它也成为macOS的Xcode和Android Studio的默认调试器。LLDB的一些主要特性包括支持各种编译器集成和远程调试。它支持C语言(C、C++和Objective-C)。

面向软件工程师的八个优秀Linux调试器

对于那些已经熟悉基本GDB命令的人来说,LLDB会感觉很熟悉。输入run或r运行程序,输入step或s即可逐步执行子例程。

安装方法:

在基于Ubuntu/Debian的发行版中:

sudo apt install lldb

在Fedora/RHEL发行版中:

sudo dnf install lldb

在基于Arch的发行版中:

sudo pacman -S lldb

4. Delve

Delve是一个使用简单但功能丰富的Linux调试器,面向谷歌的Go编程语言。您可以使用它在运行时与程序进行交互,处理诸如Goroutine协程和堆栈之类的程序。调试器本身是用Go语言编写的,因此在与您测试的程序相同的环境中提供运行时。

面向软件工程师的八个优秀Linux调试器

Delve的工作原理与GDB和LLDB相同,只不过它有一系列独特的命令,与其他两个大不相同。一旦您进入Delve,只要输入help,它就会列出所有调试选项的完整列表。

与面向多种语言的比较通用的调试器不同,Delve提供了更多专门针对Go的命令,让您在应用程序运行时可以更详细地深入了解应用程序。

面向软件工程师的八个优秀Linux调试器

安装方法:

在基于Ubuntu/Debian的发行版中:

sudo apt install delve

在Fedora/RHEL发行版中:

sudo dnf install delve

在基于Arch的发行版中:

sudo pacman -S delve

5. Xdebug

虽然大多数人学习转储变量(这在PHP社区名为“dump & die”)以找出代码某个方面的问题,但有时您需要一些更实用的工具逐步完成例程的所有环节。Xdebug显然为满怀抱负的PHP程序员和经验丰富的PHP程序员提供了这种功能。

面向软件工程师的八个优秀Linux调试器

它是一个Linux调试器,可以逐行调试PHP代码,并准确显示处理网页时发生的情况。Xdebug还适用于几款IDE,包括VSCode。其他功能特性包括可靠的分析器、堆栈跟踪器和转储完整执行段的功能。

安装Xdebug:

在基于Ubuntu/Debian的发行版中:

sudo apt install php-xdebug

在Fedora/RHEL发行版中:

sudo dnf install php-xdebug

在基于Arch的发行版中:

sudo pacman -S xdebug

6. KDbg

KDbg是一款面向KDE桌面环境的GUI调试器。由于它像DDD一样作为GDB前端运行,因此您可以获得GDB的所有特性以及直观的用户界面。更有经验的程序员肯定会喜欢在逐步调试代码时一目了然地看清所有变量,还会喜欢一个完全专用的面板,显示每个CPU寄存器保存的内容。这类信息在本文介绍的任何其他调试器中都不容易看到。

正因为如此,对于传统的本地应用程序程序员来说,KDbg是一个出色的选择,适用于从刚开始学习的菜鸟和经验丰富的老手。

面向软件工程师的八个优秀Linux调试器

安装KDbg:

在基于Ubuntu/ Debian的发行版中:

sudo apt install kdbg

在Fedora/RHEL发行版中:

sudo dnf install kdbg

在基于Arch的发行版中:

sudo pacman -S kdbg

注意:如果您使用的是基于Ubuntu或Debian的发行版,并且在官方代码库中没有找到kdbg软件包,您必须输入以下内容来自行构建:

sudo apt install build-essential cmake extra-cmake-modules qtbase5-dev libkf5i18n-dev libkf5iconthemes-dev libkf5xmlgui-dev
git clone -b maint https://github.com/j6t/kdbg.git
cd kdbg
cmake .
make
sudo make install

7. Valgrind

Valgrind是一个非常可靠的内存调试器,它为软件分析提供了许多额外的工具。它在Linux和Mac上都可以运行。此外,您可以将它用作框架,并创建像剖析器(Profiler)这样的动态分析工具。总的来说,Valgrind是专业人士的上佳选择,因为它拥有丰富的功能特性和众多工具,可以在程序运行时监视其内存。

面向软件工程师的八个优秀Linux调试器

Valgrind安装方法:

在基于Ubuntu/ Debian的发行版上:

sudo apt install valgrind

在Fedora/RHEL发行版上:

sudo dnf install valgrind

在基于Arch的发行版上:

sudo pacman -S valgrind

8. strace

strace是一个面向Unix的用户空间实用程序,它允许用户直接从终端跟踪系统调用和信号。

面向软件工程师的八个优秀Linux调试器

程序员可以使用它来处理转储堆栈跟踪、过滤系统调用、修改返回代码、提取文件描述符等操作。

更重要的是,strace允许您附加到运行中的程序。这使您可以深入了解在机器上运行的任何软件,以进一步了解可能导致崩溃的原因。

strace安装方法:

在基于Ubuntu/ debian的发行版中:

sudo apt install strace

在Fedora/RHEL发行版中:

sudo dnf install strace

在基于Arch的发行版中:

sudo pacman -S strace

借助这些工具,您可以用以前感觉无法企及的方式来调试、检查和分析代码。可能面临一段学习过程,但非常值得花时间钻研。如果您重视Linux编程,从长远来看,学习如何使用调试器将为您大大节省时间。

您已经拥有了最好的Linux调试器,现在是时候为开发人员和程序员寻找最好的Linux发行版了。

原文标题:8 of the Best Linux Debuggers for Software Engineers,作者:Miguel Leiva-Gomez

原文地址:https://www.51cto.com/article/783530.html

延伸 · 阅读

精彩推荐
  • LinuxLinux日历程序California 0.2 发布 添加了“自然语言”解析器

    Linux日历程序California 0.2 发布 添加了“自然语言”解析器

    随着上月的Geary和Shotwell的更新,非盈利软件套装Yobra又回来了,同时带来了是新的California日历程序,最突出变化的是添加了“自然语言”解析器,让我们一...

    Linux教程网2422019-10-27
  • LinuxDebian LINUX 基础知识介绍

    Debian LINUX 基础知识介绍

    IP地址设置: /etc/network/interface // 动态DHCP获得 # 启动系统激活设备 # Loop回环地址 auto lo iface lo inet loopback # 启动系统激活设备 # 网卡eth0设置为DHCP类型 auto e...

    Linux教程网3022020-04-15
  • Linux掌握 Linux sed 命令综合指南

    掌握 Linux sed 命令综合指南

    这篇文章为初学者提供了关于 Linux 中 sed 命令的全面指南,涵盖了其历史、用途以及一些实用的技巧和窍门。通过掌握 sed,您可以高效处理文本处理任务,...

    Linux迷22023-07-03
  • Linux配置Linux服务器SSH 安全访问的四个小技巧

    配置Linux服务器SSH 安全访问的四个小技巧

    越来越多的站长,开始使用独立主机(Dedicated Host)和 VPS。而为了节省成本或提高性能,不少人的独机和 VPS,都是基于 unmanaged 的裸机,一切都要自己 DIY。这...

    Linux教程网5652021-03-19
  • Linuxlinux解决Tomcat内存溢出的问题

    linux解决Tomcat内存溢出的问题

    下面小编就为大家带来一篇linux解决Tomcat内存溢出的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Linux教程网9502021-12-07
  • Linux详解Linux awk 入门教程

    详解Linux awk 入门教程

    AWK是一种处理文本文件的语言,是一个强大的文本分析工具。本文给大家带来了Linux awk 入门教程,感兴趣的朋友跟随小编一起看看吧...

    阮一峰12062022-08-05
  • Linuxlinux命令行下文件名中有空格的处理方法

    linux命令行下文件名中有空格的处理方法

    Q:我在树莓派命令行模式下使用mplayer播放单首音乐,因为文件名中含有空格,提示不存在该文件,该如何解决? [johnwick@raspberrypi~]$sudo mplayer Me like yuh.mp3 ...

    linux之家18922019-06-01
  • LinuxLinux shell 比较运算符详解

    Linux shell 比较运算符详解

    这篇文章主要介绍了Linux shell 比较运算符详解,需要的朋友可以参考下...

    Linux之家6072019-06-12