Charset=invalidcharsetid 48

デバッガは、プログラムのバグを見つけるために不可欠なものだ。デバッガは、コンパイルする前にコードの問題点を見つけようとする足跡を残し、通常はコンパイラそのものよりも多くの情報を提供してくれる。Linuxは主にオープンソースのエコシステムであるため、いくつかの異なる言語や処理アーキテクチャで動作する、この種のアプリケーションが数多く存在する。このガイドでは、Linuxデバッガーの世界に直行しよう。

1.GNUデバッガ(GDB)

GNUデバッガー、別名GDBは、現代のプログラマーが利用できる最も強力なLinuxデバッガーの1つです。豊富な機能を備えた堅牢なツールである。GDBは、C、C++、Go、Rustなど、多くの一般的なプログラミング言語をサポートしている。また、x86、x86-64、ARM、PowerPC、SPARC、MIPSなど、さまざまなCPUアーキテクチャで動作する。

Demonstration of GDB running a test program

以下のコマンドを使ってGDBをインストールする:

Ubuntu/Debianベースのディストロの場合:

sudo apt install gdb

Fedora/RHELディストロの場合:

sudo dnf install gdb

Arch ベースのディストロでは

sudopacman-S gdb

デバッグ・シンボル付きのGCCを使ってコンパイルしている限り、sをタイプすれば、プログラムの実行中にその命令をステップ実行できる。プログラムがロードされた状態でGDBを起動するには、ターミナルでgdbと入力し、その後にプログラムのパスを入力します。

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

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

コマンドをいじるのは苦手だけど、GDBが提供する機能は大好きという場合、DDDはシンプルなグラフィカルフロントエンドを提供し、ポイント&クリックのインターフェースですべての機能を提供します。これはLinuxデバッガGUIの真髄だ。

DDD running a rudimentary program and exiting.

UIは少し素っ気なく見えるかもしれないが、他のデバッガーと同じくらいパワフルだ。ここでの違いは、GNUの代表的なデバッガをグラフィカル・インターフェースで利用できることだ!

インストールするには

Ubuntu/Debianベースのディストロの場合:

sudo apt install ddd

Fedora/RHELディストロの場合:

sudo dnf install ddd

Archベースのディストロでは

yay-S ddd

DDD は公式リポジトリに存在しないので、Arch ベースのものは AUR ヘルパーを使う必要があります。代わりに、AUR ヘルパーなしで Arch ベースのシステムに DDD をインストールすることもできます:

sudopacman-S --neededbase-develgit clone https://aur.archlinux.org/ddd.gitcd dddmakepkg-si

3.LLDB

LLDBは LLVM プロジェクトの一部です。LLVMスイートは、その効率的なワークフローのおかげで人気を集めている。また、macOSのXcodeやAndroid Studioのデフォルト・デバッガーにもなっている。LLDBの主な機能には、様々なコンパイラー統合やリモート・デバッグのサポートがある。C言語(C、C++、Objective-C)をサポートしている。

Linuxdebugger Lldb

すでに基本的なGDBコマンドに慣れている人にとっては、LLDBは馴染みのあるものだろう。runまたはrと入力するとプログラムが実行され、stepまたはsと入力するとサブルーチンが実行される。

インストール方法

Ubuntu/Debianベースのディストロの場合:

sudo apt installlldb

Fedora/RHEL系ディストロの場合:

sudo dnf installlldb

Archベースのディストロでは

sudopacman-Slldb

4.Delve

Delveはシンプルで機能が豊富な、Google の Go プログラミング言語用の Linux デバッガーです。実行時にプログラムを操作したり、ゴルーチンやスタックなどを操作するのに使えます。デバッガー自体はGoで書かれているため、テストしているプログラムと同じ環境でのランタイムを提供する。

Delve debugger running a program with rudimentary code.

DelveはGDBやLLDBと同じ原理で動作するが、他の2つとは大きく異なる独自のコマンドセットがある。helpと入力すれば、デバッグ・オプションの全リストが表示される。

複数の言語に対応した一般的なデバッガーとは異なり、DelveはGoに特化したコマンドを提供しており、実行中のアプリケーションをより詳細に調べることができます。

Using Delve to look into specific Go routines and threads.

インストール方法

Ubuntu/Debianベースのディストロの場合:

sudo apt installdelve

Fedora/RHELディストロの場合:

sudo dnf installdelve

Arch ベースのディストロでは

sudopacman-Sdelve

5.Xdebug

ほとんどの人は変数のダンプ (PHP コミュニティでは "dump & die" と呼ばれています) を学んでコードのある部分に問題があることを突き止めます。Xdebugは、PHPプログラマー志望者やベテランプログラマーにこれを提供します。

Xdebug output during a debug session of some simple "echo spam" PHP code.

XdebugはLinuxのデバッガで、PHPのコードを一行ずつ走査し、Webページが処理されるときに何が起こっているかを正確に表示します。Xdebugは、VSCodeを含むいくつかのIDEでも動作します。その他の機能として、強力なプロファイラ、スタックトレーサ、実行セグメントを完全にダンプする機能などがあります。

Xdebugをインストールするには

Ubuntu/Debianベースのディストロの場合:

sudo apt installphp-xdebug

Fedora/RHEL 系ディストロの場合:

sudo dnf installphp-xdebug

Arch ベースのディストロでは

sudopacman-Sxdebug

6.KDbg

KDbgKDE デスクトップ環境用の GUI デバッガです。DDD のように GDB フロントエンドとして動作するので、直感的なユーザーインターフェイスと一緒に GDB の全ての機能が得られます。より経験豊富なプログラマーは、コードをステップスルーしながらすべての変数をクリアに見ることができ、各CPUレジスタが何を保持しているかを示す完全な専用パネルがあることに感謝するだろう。ここで取り上げた他のデバッガでは、このような視覚化はほとんど容易ではない。

このため、KDbgは、学習を始めたばかりのオタマジャクシから、熟練したベテランまで、従来のネイティブ・アプリケーション・プログラマーにとって素晴らしい選択肢です。

KDbg debugging a running program written in C.

KDbgをインストールするには

Ubuntu/Debianベースのディストロの場合:

sudo apt installkdbg

Fedora/RHELディストロの場合:

sudo dnf installkdbg

Archベースのディストロの場合

sudopacman-Skdbg

Note: UbuntuやDebianベースのディストロを使っていて、公式リポジトリにkdbgのパッケージが見つからない場合、自分でビルドするために入力する内容は以下の通り:

sudo apt installbuild-essential cmake extra-cmake-modules qtbase5-dev libkf5i18n-dev libkf5iconthemes-dev libkf5xmlgui-devgit clone -bmaint https://github.com/j6t/kdbg.gitcdkdbg cmake .makesudo make install

7.Valgrind

Valgrindは揺るぎないメモリデバッガーであり、ソフトウェア解析のための多くの追加ツールを提供します。LinuxでもMacでも動作する。さらに、フレームワークとして使用し、プロファイラのような動的解析ツールを作成することもできる。全体的に、Valgrindは、その豊富な機能セットと、プログラムの実行中にメモリを監視する様々なツールにより、専門家にとって優れた選択肢である。

Valgrind detecting a memory leak in a program.

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

Ubuntu/Debianベースのディストロの場合:

sudo apt install valgrind

Fedora/RHELディストロの場合:

sudo dnf install valgrind

Arch系ディストロの場合

sudopacman-S valgrind

8. strace

straceは Unix 用のユーザー空間ユーティリティで、ターミナルから直接システムコールやシグナルをトレースできます。

Linuxdebugger Strace

プログラマーは、スタックトレースのダンプ、システムコールのフィルタリング、リターンコードの変更、ファイルディスクリプタの抽出などに使うことができる。

さらに重要なのは、straceを使えば実行中のプログラムにアタッチできるということだ。これによって、あなたのマシンで実行されているあらゆるソフトウェアの爪の下を潜り抜け、クラッシュの原因となっている可能性のあるものについて詳しく知ることができる。

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

Ubuntu/Debianベースのディストロの場合:

sudo apt install strace

Fedora/RHEL系ディストロの場合:

sudo dnf install strace

Arch系ディストロの場合

sudopacman-S strace

アーセナルが待っている

これらのツールを使えば、以前は近寄りがたいと感じていたような方法で、コードをつつき、突き、分析することができる。学習には少し時間がかかるかもしれないが、その価値は十分にある。Linuxでのプログラミングを真剣に考えているのなら、デバッガの使い方を学ぶことは、長期的にはずっと時間の節約になるだろう。

最高のLinuxデバッガーを手に入れた今、開発者やプログラマーにとって最高のLinuxディストロを見つける時が来た。

画像クレジット:すべての画像は著者によるものです。

Akira
Akiraは情熱的なゲーマーであり、製品レビュアーです。ゲームをしていないときは、最新のゲーミングアクセサリーを試したり、製品のレビューをしていることが多い。彼の分かりやすいスタイルは、ゲーマーが自分のニーズに最も適した製品を簡単に判断できるようにするものです。また、技術的な問題にも精通しており、その解決方法も知っている。