カテゴリ: C++ 更新日: 2025/12/22

C++デバッガ(gdb・lldb)の導入と使い方を完全ガイド!初心者でも理解できるデバッグ入門

C++デバッガ(gdb, lldb)の導入と使い方
C++デバッガ(gdb, lldb)の導入と使い方

先生と生徒の会話形式で理解しよう

生徒

「C++のプログラムを作っていると、どこで間違えているのか全然わからなくなることがあります…どうすればいいですか?」

先生

「そんなときに使うのがデバッガです。gdbやlldbを使えば、プログラムがどう動いているか途中で止めて確認できますよ。」

生徒

「途中で止めたり中身を見たりできるんですね!難しそうだけど、使えるようになりたいです。」

先生

「それでは、C++デバッガの基礎から実践まで、順番に一緒に学んでいきましょう。」

1. デバッガとは?初心者にもわかる基礎説明

1. デバッガとは?初心者にもわかる基礎説明
1. デバッガとは?初心者にもわかる基礎説明

デバッガとは、C++のプログラムがどのように動いているかを確認するための道具です。プログラムを一行ずつ動かしたり、変数の中身を確認したり、特定の場所で止めたりできます。これは、車の内部を点検するメカニックのように、プログラム内部を見ながら原因を探せる強力な仕組みです。

バグは「プログラムが思った通りに動かない問題」のことですが、初心者に限らず多くのプログラマーが毎日のように向き合っています。デバッガは、このバグを見つけるための重要なツールで、C++学習でも必ず身につけておきたい技術です。

代表的なデバッガとして、LinuxやWindowsではgdb、macOSではlldbがよく使われます。どちらも無料で使えるため、初心者でも安心して導入できます。

2. gdbとlldbの違い

2. gdbとlldbの違い
2. gdbとlldbの違い

gdbとlldbはどちらもC++プログラムをデバッグするためのツールです。主な違いは以下のとおりです。

  • gdb:GNUプロジェクトのデバッガ。Linux環境で広く使われる。多機能で安定している。
  • lldb:LLVMプロジェクトのデバッガ。macOS標準。Clangと相性が良い。

機能は似ていますが、コマンドの書き方に少し違いがあります。この記事では初心者でもすぐ使えるように、共通点と基本操作をしっかり解説します。

3. gdbのインストール方法

3. gdbのインストール方法
3. gdbのインストール方法

gdbはLinuxでは標準で入っていることが多いですが、WindowsやmacOSでは自分で入れる必要があります。

● Linuxの場合

sudo apt install gdb
● Windows(MinGW)

MinGW-w64をインストールするとgdbも一緒に入ります。C++開発環境とあわせて導入するのが一般的です。

● macOS

brew install gdb

4. lldbのインストール方法

4. lldbのインストール方法
4. lldbのインストール方法

lldbはmacOSには標準搭載されているため、ほとんどの場合はすぐに使えます。LinuxでもLLVMをインストールすれば使えるようになります。


sudo apt install lldb

5. デバッグ用にC++をコンパイルする方法

5. デバッグ用にC++をコンパイルする方法
5. デバッグ用にC++をコンパイルする方法

デバッガで使うためには、コンパイル時にデバッグ情報を付ける必要があります。これは「-g」というオプションで指定します。


#include <iostream>
int main() {
    int a = 10;
    int b = 0;
    int c = a / b;  // わざとエラーになるコード
    std::cout << c << std::endl;
    return 0;
}

コンパイル方法:


g++ -g debug_test.cpp -o debug_test

6. gdbの基本的な使い方

6. gdbの基本的な使い方
6. gdbの基本的な使い方

gdbを使うには、次のように起動します。


gdb ./debug_test

代表的なgdbコマンドを紹介します。

  • run:プログラムを実行する
  • break 行番号:指定行で止める(ブレークポイント)
  • next:一行ずつ進む
  • print 変数:変数の中を見る
  • quit:終了する

例:10行目で止めたい場合


break 10
run
print a
next

7. lldbの基本操作

7. lldbの基本操作
7. lldbの基本操作

lldbの起動は次の通りです。


lldb ./debug_test

lldbの基本コマンド:

  • run:プログラムを実行
  • breakpoint set -l 行番号:行でブレークポイント
  • next:一行実行
  • frame variable:変数を確認
  • quit:終了

ブレークポイントの例:


breakpoint set -l 10
run
frame variable a
next

8. デバッグでよくあるトラブルと対処法

8. デバッグでよくあるトラブルと対処法
8. デバッグでよくあるトラブルと対処法

初心者がつまずきやすいポイントと解決策を紹介します。

  • プログラムが止まらない:ブレークポイントが正しい場所にあるか確認する
  • 変数が見えない:コンパイル時に「-g」を付けたか確認する
  • 最適化されて値が変:「-O2」など最適化オプションを外す

デバッガは初心者ほど助けになるツールなので、早い段階で使えるようになると学習がぐっと楽になります。

まとめ

まとめ
まとめ

C++デバッグを学ぶ意味と全体の振り返り

この記事では、C++プログラムを正しく理解し、問題を効率よく解決するために欠かせない デバッガの基礎について、gdbとlldbを中心に詳しく解説してきました。 C++は自由度が高く処理性能にも優れた言語ですが、その分、エラーが発生したときに 原因を見つけにくいという特徴があります。 コンパイルエラーであれば表示されるメッセージから比較的簡単に修正できますが、 実行時エラーや想定と違う動作は、コードを眺めているだけではなかなか原因にたどり着けません。 そこで活躍するのがデバッガです。 デバッガを使えば、プログラムを一行ずつ実行しながら処理の流れを確認したり、 変数の値がどのタイミングで変わっているのかを直接確認できます。 これはC++学習において、非常に大きな助けになります。

gdbとlldbを使い分ける考え方

gdbとlldbは、どちらもC++のデバッグに使える強力なツールですが、 主に利用される環境や細かな操作方法に違いがあります。 Linux環境ではgdbが標準的に使われており、情報量も多く、長年の実績があります。 一方、macOSではlldbが標準のデバッガとして用意されており、 Clangとの相性も良く、自然な流れで使い始められます。 どちらを選んでも、ブレークポイントを設定し、プログラムを途中で止め、 変数の中身を確認するという基本的な考え方は共通しています。 まずは自分の開発環境に合ったデバッガを使い、 デバッグという作業そのものに慣れることが重要です。

デバッグ用コンパイルと基本操作の重要性

デバッガを正しく使うためには、コンパイル時にデバッグ情報を付けることが欠かせません。 記事内で紹介したように、「-g」オプションを付けてコンパイルすることで、 ソースコードと実行ファイルの対応関係が保たれ、行番号や変数名を使ったデバッグが可能になります。 この一手間を忘れてしまうと、ブレークポイントが効かなかったり、 変数の値が確認できなかったりと、初心者が混乱しやすい状況になります。 デバッグの基本操作として、実行、停止、一行実行、変数の表示を繰り返し行うことで、 C++プログラムが内部でどのように動いているのかを、具体的にイメージできるようになります。

まとめとしてのシンプルなデバッグ用サンプル


#include <iostream>

int main() {
    int x = 5;
    int y = 2;
    int result = x * y;
    std::cout << "計算結果: " << result << std::endl;
    return 0;
}

このような簡単なC++プログラムでも、デバッガを使えば、 変数xやyがどの時点でどの値を持っているのかを確認できます。 初心者のうちは、このレベルのコードでデバッグ操作を試しながら、 ブレークポイントや一行実行の感覚を身に付けるのがおすすめです。 デバッグに慣れてくると、エラーが出たときに慌てず、 「まず止めて中を確認する」という冷静な対応ができるようになります。

先生と生徒の振り返り会話

生徒

「今まではエラーが出ると、どこが悪いのか分からなくて、 何度もコードを書き直していましたけど、 デバッガを使えば途中で止めて確認できるんですね。」

先生

「そうだよ。C++では特に、デバッガを使うかどうかで 問題解決までの時間が大きく変わる。 目で見て確認できるのは、とても大きな強みなんだ。」

生徒

「gdbとlldbの違いも分かりましたし、 まずは自分の環境で基本操作をしっかり練習してみます。」

先生

「それが一番いいね。デバッグはC++学習の土台になる技術だから、 焦らず何度も使って、自然に使えるようになっていこう。」

カテゴリの一覧へ
新着記事
New1
C++
C++のグローバル変数とローカル変数の違いを完全解説!初心者でもわかる基本と使い分け
New2
Rust
Rustプロジェクト管理とビルドの完全ガイド!Cargoの使い方とCargo.tomlの設定を初心者向けに徹底解説
New3
C言語
C言語のsizeof演算子で型サイズを調べよう!初心者でもわかる変数とデータ型の仕組み
New4
C++
C++の変数のスコープと有効範囲を完全解説!初心者でもわかる基本と考え方
人気記事
No.1
Java&Spring記事人気No1
C言語
C言語をオンラインで実行できる便利なコンパイラサービスまとめ【初心者向け】
No.2
Java&Spring記事人気No2
C言語
C言語の関数定義と呼び出しを完全ガイド!初心者でも分かる基本の書き方
No.3
Java&Spring記事人気No3
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.4
Java&Spring記事人気No4
C++
C++の主要な実装をわかりやすく解説!GCC・Clang・MSVCの違いと特徴
No.5
Java&Spring記事人気No5
C言語
C言語の配列と文字列の基本を完全ガイド!初心者でもわかる宣言と使い方
No.6
Java&Spring記事人気No6
C++
CMakeの基本構文とCMakeLists.txtを初心者向けに解説
No.7
Java&Spring記事人気No7
C言語
C言語の開発環境をWindowsに構築する方法【Visual Studio編】
No.8
Java&Spring記事人気No8
C言語
C言語の列挙型(enum)の使い方を完全ガイド!初心者でもわかる基本操作