LLDB-MCP について
LLDB-MCP は、LLDB デバッガーを MCP に接続する MCP サーバーです。AI クライアントから LLDB のデバッグセッションを開始、制御、検査できます。バッファオーバーフローによるクラッシュの調査など、ネイティブプログラムのAI支援デバッグを行う開発者に向けたツールです。
主な機能
- 01複数の LLDB デバッグセッションの管理
- 02実行ファイルの読み込み、プロセスへのアタッチ、コアダンプの読み込み
- 03ブレークポイントとウォッチポイントの設定
- 04continue、step、next、finish による実行制御
- 05バックトレース、メモリ、レジスタ、変数の確認
- 06任意の LLDB コマンドの実行
活用シーン
- 01特定の引数でクラッシュする C プログラムのデバッグ
- 02クラッシュ後のコアダンプファイルの解析
- 03自然言語での指示による変数とメモリの確認
MCP 対応
本プロジェクトは MCP サーバーとして動作し、Claude デスクトップアプリなどの MCP クライアントに対して lldb_start、lldb_run、lldb_backtrace などのツールを公開し、LLDB セッションを操作します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
LLDB-MCP

バッファーオーバーフローを自動的にデバッグする様子はこちらでご覧いただけます:https://x.com/full_duplex/status/1904770477698277847
概要
LLDB-MCPは、LLDBデバッガーをClaudeのModel Context Protocol(MCP)と統合するツールです。この統合により、ClaudeからLLDBのデバッグセッションを直接開始、制御、操作でき、AI を活用したデバッグワークフローが可能になります。
このツールは、LLDBを操作するための包括的なコマンド一式を提供します。次の操作が可能です。
- LLDBセッションの開始と管理
- デバッグ対象プログラムの読み込み
- ブレークポイントとウォッチポイントの設定
- プログラム実行の制御
- メモリ、レジスター、変数の調査
- スタックトレースとプログラム状態の分析
機能
- 複数のLLDBデバッグセッションの作成と管理
- 実行ファイルの読み込みと実行中プロセスへのアタッチ
- 事後分析用のコアダンプファイルの読み込み
- 任意のLLDBコマンドの実行
- プログラム実行のきめ細かな制御
- メモリの調査と逆アセンブル
- スレッドとスタックフレームの調査
インストール
-
リポジトリをクローンします。
git clone https://github.com/stass/lldb-mcp.git cd lldb-mcp -
依存関係をインストールします。
pip install mcp -
LLDB-MCP サーバーを使用するようClaudeを設定します。
- Claudeデスクトップアプリの設定を開きます
- MCPの設定に次の内容を追加します。
"mcpServers": { "lldb-mcp": { "command": "python3", "args": ["/path/to/lldb-mcp/lldb_mcp.py"], "disabled": false } }
使い方
インストールと設定が完了したら、自然言語を使ってClaude経由でLLDBを操作できます。
基本的なワークフロー
- 新しいLLDBセッションを開始します
- プログラムを読み込みます
- ブレークポイントを設定します
- プログラムを実行します
- 変数とメモリを調べます
- 実行を制御します(continue、step、nextなど)
- 完了したらセッションを終了します
コマンドの例
Claude経由でLLDB-MCPを操作する例を以下に示します。
- 「新しいLLDBセッションを開始して」
- 「プログラム「/path/to/executable」を読み込んで」
- 「mainにブレークポイントを設定して」
- 「プログラムを実行して」
- 「バックトレースを表示して」
- 「変数「count」の値を出力して」
- 「次の行をステップオーバーして」
- 「アドレス0x1000のメモリを調べて」
- 「レジスターの値を表示して」
- 「実行を続けて」
- 「プロセスを強制終了して」
- 「LLDBセッションを終了して」
サポートされているコマンド
セッション管理
lldb_start:新しいLLDBセッションを開始しますlldb_terminate:LLDBセッションを終了しますlldb_list_sessions:アクティブなLLDBセッションをすべて一覧表示します
プログラムの読み込み
lldb_load:プログラムをLLDBに読み込みますlldb_attach:実行中のプロセスにアタッチしますlldb_load_core:コアダンプファイルを読み込みます
実行制御
lldb_run:読み込んだプログラムを実行しますlldb_continue:プログラムの実行を続けますlldb_step:次の行または命令にステップ実行しますlldb_next:関数呼び出しをステップオーバーしますlldb_finish:現在の関数が戻るまで実行しますlldb_kill:実行中のプロセスを強制終了します
ブレークポイントとウォッチポイント
lldb_set_breakpoint:ブレークポイントを設定しますlldb_breakpoint_list:ブレークポイントをすべて一覧表示しますlldb_breakpoint_delete:ブレークポイントを削除しますlldb_watchpoint:変数またはメモリアドレスにウォッチポイントを設定します
調査
lldb_backtrace:呼び出しスタックを表示しますlldb_print:式の値を出力しますlldb_examine:メモリを調べますlldb_info_registers:レジスターを表示しますlldb_frame_info:スタックフレームの詳細情報を取得しますlldb_disassemble:コードを逆アセンブルしますlldb_process_info:現在のプロセスに関する情報を取得します
スレッド管理
lldb_thread_list:現在のプロセスのスレッドをすべて一覧表示しますlldb_thread_select:特定のスレッドを選択します
その他
lldb_command:任意のLLDBコマンドを実行しますlldb_expression:現在のフレームで式を評価しますlldb_help:LLDBコマンドのヘルプを取得します
サンプルプログラム
example/overflow.cには、特定の引数を指定するとバッファーオーバーフローを起こすサンプルCプログラムが含まれています。
cc overflow.cを使ってコンパイルし、生成されたプログラムの問題をデバッグするようClaudeに依頼します。
I'm trying to debug my program a.out that is crashing with certain arguments, e.g. when I pass "hello".
Can you help me debug it?
デバッグのヒント
- 専用の関数がない LLDB コマンドを実行する必要がある場合は、
lldb_commandを使用してください - 詳細なログを記録するには、サーバーの起動時に
--debugフラグを有効にしてください - サーバーのシャットダウン時に、セッションは自動的にクリーンアップされます
- 各セッションには一意の ID があります。コマンドを実行するときは、正しい ID を使用してください
要件
- Python 3.7+
- システムに LLDB がインストールされていること
- MCP に対応した Claude デスクトップアプリ
トラブルシューティング
- LLDB コマンドがタイムアウトする場合は、LLDB が正しくインストールされていることを確認してください
- 新しいセッションの開始時に、LLDB へのパスを確認してください
- プロセスへのアタッチ時に権限の問題がないか確認してください
- コマンドが正しく実行されない場合は、デバッグログを確認してください
ライセンス
BSD 2-clause
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。