mcpField
L
LLDB-MCP

LLDB-MCP

ローカル
github.com/stass開発ツール11483 週間前に更新

LLDB-MCP について

LLDB-MCP は、LLDB デバッガーを MCP に接続する MCP サーバーです。AI クライアントから LLDB のデバッグセッションを開始、制御、検査できます。バッファオーバーフローによるクラッシュの調査など、ネイティブプログラムのAI支援デバッグを行う開発者に向けたツールです。

主な機能

  1. 01複数の LLDB デバッグセッションの管理
  2. 02実行ファイルの読み込み、プロセスへのアタッチ、コアダンプの読み込み
  3. 03ブレークポイントとウォッチポイントの設定
  4. 04continue、step、next、finish による実行制御
  5. 05バックトレース、メモリ、レジスタ、変数の確認
  6. 06任意の LLDB コマンドの実行

活用シーン

  1. 01特定の引数でクラッシュする C プログラムのデバッグ
  2. 02クラッシュ後のコアダンプファイルの解析
  3. 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コマンドの実行
  • プログラム実行のきめ細かな制御
  • メモリの調査と逆アセンブル
  • スレッドとスタックフレームの調査

インストール

  1. リポジトリをクローンします。

    git clone https://github.com/stass/lldb-mcp.git
    cd lldb-mcp
    
  2. 依存関係をインストールします。

    pip install mcp
    
  3. LLDB-MCP サーバーを使用するようClaudeを設定します。

    • Claudeデスクトップアプリの設定を開きます
    • MCPの設定に次の内容を追加します。
    "mcpServers": {
      "lldb-mcp": {
        "command": "python3",
        "args": ["/path/to/lldb-mcp/lldb_mcp.py"],
        "disabled": false
      }
    }
    

使い方

インストールと設定が完了したら、自然言語を使ってClaude経由でLLDBを操作できます。

基本的なワークフロー
  1. 新しいLLDBセッションを開始します
  2. プログラムを読み込みます
  3. ブレークポイントを設定します
  4. プログラムを実行します
  5. 変数とメモリを調べます
  6. 実行を制御します(continue、step、nextなど)
  7. 完了したらセッションを終了します
コマンドの例

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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。