8のベストLinuxデバッガーソフトウェアエンジニア向け

Charset=invalidcharsetid 48

デバッガーは、プログラム内のバグを見つけるために欠かせない存在です。これらは、コンパイルする前にコードの問題を見つけるために調査を行い、通常はコンパイラー自身よりも多くの情報を提供してくれます。Linuxは主にオープンソースのエコシステムであり、さまざまなプログラミング言語や処理アーキテクチャに対応する多くのこうしたアプリケーションがあります。このガイドでは、Linuxデバッガーの世界に飛び込みます。

目次

    1. GNUデバッガー(GDB)
    1. データ表示デバッガー (DDD)
    1. LLDB
    1. Delve
    1. Xdebug
    1. KDbg
    1. Valgrind
    1. strace

1. GNUデバッガー(GDB)

GNUデバッガー、別名GDBは、現代のプログラマー向けに利用可能な最も強力なLinuxデバッガーの1つです。それは、広範な機能セットを持つ堅牢なツールです。GDBは、C、C++、Go、Rustなどの多くの人気プログラミング言語をサポートしています。また、x86、x86-64、ARM、PowerPC、SPARC、MIPSなどの多くの異なるCPUアーキテクチャで動作します。

テストプログラムの実行中のGDBのデモ

GDBをインストールするには、以下のコマンドを使用します:

Ubuntu/Debianベースのディストリビューションで:

sudo apt install gdb

Fedora/RHELディストリビューションで:

sudo dnf install gdb

Archベースのディストリビューションで:

sudo pacman -S gdb

GCCを使ってデバッグシンボルでコンパイルする限り、プログラムが実行される際にインストラクションをステップ実行することができます。rとタイプすることでデバッガーを介してプログラムを実行します。プログラムをロードした状態でGDBを開始するには、ターミナルにgdbと入力し、プログラムのパスを続けて入力します。

入ったら、helpと入力すると、この強力なデバッガーでできることを説明する整然としたカタログが表示されます!

2. データ表示デバッガー (DDD)

コマンドの操作が得意でない方でも、GDBが提供する機能が好きな場合、DDDは全ての機能をポイントアンドクリックのインターフェースで提供するシンプルなグラフィカルフロントエンドを提供します。これは典型的なLinuxデバッガーのGUIです。

基本的なプログラムを実行して終了するDDD

UIは少し簡素に見えるかもしれませんが、他のデバッガーと同じくらい強力です。ここでの違いは、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デバッガー Lldb

基本的な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は、GoogleのGoプログラミング言語用のシンプルでかつ機能豊富なLinuxデバッガーです。実行時にプログラムと対話し、goroutineやスタックなどを操作することができます。デバッガー自体はGoで書かれているため、テストしているプログラムと同じ環境で動作します。

Delveは、GDBやLLDBと同様の原則で動作しますが、他の2つとは大きく異なる独自のコマンドセットを持っています。入ったらhelpと入力すると、提供されるすべてのデバッグオプションの全リストが表示されます。

複数の言語に対応する一般的なデバッガーとは異なり、DelveはGo固有のコマンドを提供し、実行中のアプリケーションに対してより詳細なレベルでの触れ合いを可能にします。

特定のGoルーチンおよびスレッドを調べるためのDelveの使用

インストールするには:

Ubuntu/Debianベースのディストリビューションで:

sudo apt install delve

Fedora/RHELディストリビューションで:

sudo dnf install delve

Archベースのディストリビューションで:

sudo pacman -S delve

5. Xdebug

ほとんどの人は、特定のコードの問題を見つけるために変数をダンプする(PHPコミュニティでは「ダンプ&ダイ」として知られています)ことを学びますが、時にはすべてのルーチンを通り抜けてくれる何かもっと重厚なものが必要です。Xdebugは、野心的なPHPプログラマーやベテランプログラマーに、この機能を豊富に提供します。

Xdebugは、PHPコードを行単位でステップ実行し、ウェブページが処理される際に何が起こっているのかを正確に示すLinuxデバッガーです。Xdebugは、VSCodeなどのいくつかのIDEでも動作します。他の機能には、強力なプロファイラー、スタックトレーサー、完全な実行セグメントのダンプ機能が含まれています。

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は、初めて学ぶたんぽぽから最もハードコアなベテランまで、伝統的なネイティブアプリケーションプログラマーにとって素晴らしい選択肢です。

Cで書かれた実行中のプログラムをデバッグする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の両方で動作します。さらに、フレームワークとして使用し、プロファイラーのような動的分析ツールを作成することもできます。全体的に見て、Valgrindは豊富な機能セットとプログラムのメモリを監視するさまざまなツールがあるため、専門家にとって優れた選択肢です。

プログラムのメモリリークを検出するValgrind

Valgrindをインストールするには:

Ubuntu/Debianベースのディストリビューションで:

sudo apt install valgrind

Fedora/RHELディストリビューションで:

sudo dnf install valgrind

Archベースのディストリビューションで:

sudo pacman -S valgrind

8. strace

straceは、ユーザー空間ユーティリティで、ユーザーがターミナルから直接システムコールとシグナルをトレースすることを可能にします。

Linuxデバッガー Strace

プログラマーは、スタックトレースをダンプしたり、システムコールをフィルタリングしたり、戻りコードを変更したり、ファイルディスクリプターを抽出したりするために使用できます。

さらに重要なのは、straceが実行中のプログラムにアタッチできることです。これにより、実行中のソフトウェアがクラッシュの原因となっている可能性があるものを理解するために、より詳細に探ることができます。

straceをインストールするには:

Ubuntu/Debianベースのディストリビューションで:

sudo apt install strace

Fedora/RHELディストリビューションで:

sudo dnf install strace

Archベースのディストリビューションで:

sudo pacman -S strace

武器庫が待っています

これらのツールを使って、以前はアクセスできなかった方法でコードを操作、分析、調査することができます。学ぶべきことが多少ありますが、その価値は十分にあります。Linuxでのプログラミングに真剣であれば、デバッガーの使い方を学ぶことで長期的に大幅な時間を節約できます。

これでベストなLinuxデバッガーを手に入れたので、次は開発者やプログラマー向けのベストなLinuxディストリビューションを見つける時です。

画像提供: すべての画像は著者によるものです。