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

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

译者 | 布加迪

审校 | 重楼

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

1. GNU调试器GDB

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

使用以下命令安装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

用户界面可能看起来有点简陋,但其功能与任何其他调试器一样强大。这里的区别在于,您获得的是带有图形界面的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

对于那些已经熟悉基本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语言编写的,因此在与测试程序相同的环境中提供运行时。

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

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

安装方法

在基于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调试器,可以逐行调试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是一个出色的选择,适用于从刚开始学习的菜鸟和经验丰富的老手。

安装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是专业人士的佳选择,因为它拥有丰富的功能特性众多工具,可以在程序运行时监视内存。

Valgrind安装方法:

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

sudo apt install valgrind

在Fedora/RHEL发行版上

sudo dnf install valgrind

在基于Arch的发行版上

sudo pacman -S valgrind

8. strace

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

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

更重要的是,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

责任编辑:华轩 来源: 51CTO
相关推荐

2024-09-18 14:26:33

2022-04-18 10:13:32

软件开发写作

2017-10-09 10:26:01

Linux调试器堆栈展开

2022-07-22 09:55:29

软件工程师

2022-07-29 09:12:44

软件硬件开发

2009-11-04 10:57:35

2011-07-08 16:37:20

2022-09-16 08:00:00

软件工程师求职薪酬

2013-09-03 09:30:44

软件工程师软件工程师头衔

2022-01-16 07:12:30

软件工程师吵架开发

2014-09-22 09:47:14

2009-07-16 13:28:14

2009-02-11 13:15:54

软件工程师女工程师google

2023-10-10 10:27:37

DevOps

2023-06-05 10:07:13

软件工程平台工程师

2017-11-09 14:12:44

大数据软件工程师算法工程师

2010-08-10 13:22:41

2015-06-02 11:29:55

软件工程师程序员

2009-02-12 11:52:23

软件工程师职业规划价值

2015-08-25 10:24:55

CEO软件工程师技能
点赞
收藏

51CTO技术栈公众号