Sublime Textでデバッグするには?|CやPythonの実行、補助ツールも紹介

プログラミング・IT

Sublime Text(サブライムテキスト)は軽量で多機能なテキストエディタですが、VSCodeのようにデフォルトで統合デバッグ機能は備わっていません。

「じゃあSublime Textではデバッグできないの?」と思うかもしれませんが、実は工夫次第で十分デバッグに活用できます。

この記事では、以下について初心者向けにわかりやすく解説します:

  • Sublime Textでデバッグ的な動作をする方法
  • C言語やPythonを実行してエラーをチェックするやり方
  • デバッグを助けるおすすめプラグイン
  • 外部ツールとの効率的な連携方法
スポンサーリンク

Sublime Textでの「デバッグ」の考え方

従来のデバッグ機能との違い

Sublime Text自体には、以下のような機能はありません:

  • ブレークポイントを設置する機能
  • 変数をステップ実行で追う機能
  • デバッグパネルでの変数監視

Sublime Textでできるデバッグアプローチ

その代わりに、以下の方法で「軽量なデバッグ」を行うのが一般的です:

基本的なアプローチ

  • ビルドシステムでエラー出力を確認
  • **リンター(Linter)**や構文チェックでバグを減らす
  • 外部ツールやターミナルと連携して実行・テスト
  • プラグインを活用してデバッグ効率を向上

このアプローチのメリット

  • エディタが軽量で起動が早い
  • 自分の好きなデバッグツールを組み合わせられる
  • シンプルな環境で集中できる

C言語やPythonをSublime Textから実行する方法

ビルドシステムを使った簡易デバッグ

Sublime Textの「Build System」を使えば、Ctrl + B(MacはCmd + B)でプログラムを実行し、コンソールにエラーメッセージを表示できます。

C言語の実行環境設定

手順

  1. 新しいビルドシステムを作成
    • Tools → Build System → New Build Systemを選択
  2. 設定ファイルを作成 { "cmd": ["gcc", "$file", "-o", "${file_path}/${file_base_name}", "&&", "${file_path}/${file_base_name}"], "shell": true, "file_regex": "^(.+):(\\d+):(\\d+): (.*)$", "working_dir": "${file_path}", "selector": "source.c" }
  3. ファイルを保存
    • 「C_Debug.sublime-build」などの名前で保存
  4. ビルドシステムを選択
    • Tools → Build Systemで作成したものを選択
  5. 実行とデバッグ
    • Ctrl + Bで実行
    • エラーがあればコンソールに表示される

設定の詳細説明

  • $file: 現在のファイル名
  • ${file_path}: ファイルのディレクトリパス
  • ${file_base_name}: 拡張子を除いたファイル名
  • file_regex: エラー行をクリックで飛べるようにする正規表現

Python の実行環境設定

基本的な実行

Pythonはデフォルトでビルドシステムが用意されているので:

  1. Pythonファイルを開く
  2. Tools → Build System → Pythonを選択
  3. Ctrl + Bで実行

エラー行やトレースバックがコンソールに表示されます。

カスタムPythonビルドシステム

より詳細なデバッグ情報が欲しい場合:

{
    "cmd": ["python", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",
    "env": {"PYTHONPATH": "$file_path"}
}

実行時のエラー確認方法

エラーメッセージの読み方

C言語のコンパイルエラー例

test.c:5:10: error: 'x' undeclared (first use in this function)
  • test.c: ファイル名
  • 5: 行番号
  • 10: 列番号
  • 後ろ: エラーの内容

Pythonの実行エラー例

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    print(x)
NameError: name 'x' is not defined

エラー行への素早いジャンプ

コンソールに表示されたエラー行をクリックすると、該当する行に自動的にジャンプできます。

デバッグを補助するおすすめプラグイン

SublimeLinter(構文チェック)

リアルタイムで文法エラーや潜在的な問題を検出するプラグインです。

インストール方法

  1. Package Controlを開く
    • Ctrl + Shift + P(Mac: Cmd + Shift + P
  2. SublimeLinterをインストール
    • Package Control: Install Package
    • 「SublimeLinter」を検索してインストール
  3. 言語別のリンターをインストール
    • Python: SublimeLinter-pylint
    • C/C++: SublimeLinter-gcc
    • JavaScript: SublimeLinter-eslint

使用方法

  • エラーがある行に赤い点波線が表示される
  • マウスカーソルを合わせるとエラーの詳細が表示される
  • リアルタイムでチェックされるため、入力しながらミスを発見できる

GitGutter(変更箇所の表示)

コードのどこを変更したかを色で表示するプラグインです。

機能

  • 追加した行: 緑色のマーク
  • 変更した行: 黄色のマーク
  • 削除した行: 赤色のマーク

デバッグでの活用方法

  • 「バグを入れた場所の特定」に非常に役立つ
  • 最近の変更箇所を一目で確認できる
  • バージョン管理と連携してデバッグ効率を向上

BracketHighlighter(括弧の対応表示)

括弧の対応関係を視覚的に表示するプラグインです。

活用場面

  • ネストの深いコードでの括弧ミス発見
  • 関数やループの範囲確認
  • 構文エラーの原因特定

Terminus(ターミナル統合)

Sublime Text内でターミナルを使用できるプラグインです。

メリット

  • エディタを切り替えることなくコマンド実行
  • デバッグコマンドをすぐに実行可能
  • 作業効率の向上

外部デバッガとの効率的な連携

C言語でのgdb連携

本格的にブレークポイントを使いたい場合は、gdb(GNU Debugger)との連携がおすすめです。

基本的な使い方

1. デバッグ情報付きでコンパイル

gcc -g program.c -o program

2. gdbでデバッグ開始

gdb ./program

3. よく使うgdbコマンド

(gdb) break main          # main関数にブレークポイント
(gdb) run                 # プログラム実行
(gdb) next                # 次の行へ
(gdb) print variable_name # 変数の値を表示
(gdb) continue            # 実行継続
(gdb) quit                # gdb終了

Sublime TextとgDBの役割分担

  • Sublime Text: コードの編集・閲覧
  • gdb: ステップ実行・変数の監視・ブレークポイント管理

Pythonでのpdb連携

Pythonには標準でデバッガ「pdb」が付属しています。

基本的な使い方

1. コードにデバッグポイントを挿入

import pdb

def my_function(x, y):
    result = x + y
    pdb.set_trace()  # ここでデバッグ開始
    return result * 2

print(my_function(3, 4))

2. プログラム実行 実行するとデバッグモードに入り、対話的にデバッグできます。

3. よく使うpdbコマンド

(Pdb) n          # 次の行へ
(Pdb) s          # ステップイン
(Pdb) c          # 継続実行
(Pdb) p 変数名    # 変数の値を表示
(Pdb) l          # 現在の行周辺のコードを表示
(Pdb) q          # デバッグ終了

より便利なipdb

ipdbを使うとより使いやすくなります:

pip install ipdb
import ipdb
ipdb.set_trace()  # pdbより高機能

デバッグワークフローの例

効率的なデバッグの流れ

  1. Sublime Textで初期チェック
    • SublimeLinterでリアルタイム構文チェック
    • ビルドシステムで基本的な実行・エラー確認
  2. 詳細デバッグが必要な場合
    • C言語: gdbでステップ実行
    • Python: pdbまたはipdbで詳細確認
  3. 修正後の確認
    • 再びSublime Textのビルドシステムで動作確認
    • GitGutterで変更箇所を確認

よくある質問(Q&A)

Q. VSCodeのようなデバッグパネルは使えませんか?

A. Sublime Textは軽量エディタの思想が強く、統合デバッグ機能は搭載していません。その代わり:

  • 起動や動作が非常に速い
  • 自分の好きなツールを組み合わせられる
  • シンプルな環境で集中できる

これらのメリットがあります。

Q. 実行結果をもっと見やすくしたい場合は?

A. 以下の方法がおすすめです:

ターミナルを別窓で使用

  • Windows: cmdPowerShellを別窓で開く
  • Mac/Linux: Terminalを別窓で開く
  • 直接gcc test.c && ./testなどを実行

Terminusプラグインを使用

  • Sublime Text内でターミナルを統合
  • エディタを切り替えることなく実行可能

Q. デバッグ情報をファイルに保存したい場合は?

A. ビルドシステムでリダイレクトを使用できます:

{
    "cmd": ["python", "$file", ">", "output.txt", "2>&1"],
    "shell": true
}

Q. 複数のファイルをまとめてデバッグしたい場合は?

A. Makefileを作成して、ビルドシステムから呼び出す方法がおすすめです:

{
    "cmd": ["make", "debug"],
    "working_dir": "${project_path}"
}

Q. リモートサーバー上のコードをデバッグしたい場合は?

A. 以下の方法があります:

  • SFTP/SCPプラグインでファイル同期
  • SSH接続でリモートデバッグ
  • Dockerでローカル環境を再現

デバッグ効率を上げるコツ

段階的なデバッグアプローチ

1. 静的チェック(コード解析)

  • SublimeLinterでリアルタイムチェック
  • 構文エラーや基本的なミスを事前に発見

2. 動的チェック(実行テスト)

  • ビルドシステムで基本的な動作確認
  • エラーメッセージから問題箇所を特定

3. 詳細デバッグ(ステップ実行)

  • 複雑な問題に対してgdbやpdbを使用
  • 変数の値やプログラムの流れを詳細に確認

ログ出力の活用

プログラム内に適切なログ出力を入れることで、デバッグ効率が大幅に向上します:

C言語の例

printf("Debug: x = %d, y = %d\n", x, y);

Pythonの例

print(f"Debug: x = {x}, y = {y}")

まとめ

Sublime Textでのデバッグは、以下の組み合わせで効率的に行えます:

基本的なデバッグ環境

  • ビルドシステムでエラー出力確認
  • SublimeLinterでリアルタイム構文チェック
  • GitGutterで変更箇所の可視化

本格的なデバッグ

  • C言語: gdbとの連携でステップ実行
  • Python: pdbまたはipdbで詳細確認
  • 外部ツールとの適切な役割分担

ツールの使い分け

  • Sublime Text: 編集・閲覧・基本確認
  • 外部デバッガ: ステップ実行・変数監視
  • ターミナル: コマンド実行・環境管理

コメント

タイトルとURLをコピーしました