LLDB-MCP

BSD 2-Clause "Simplified" License
1

Integrations

  • Provides tools for analyzing and debugging buffer overflow issues in programs through LLDB integration

  • Enables creation and management of LLDB debugging sessions through Python, with support for program loading, execution control, breakpoint management, and memory inspection

LLDB-MCP

バッファ オーバーフローを自動的にデバッグする acton のこちらの記事をご覧ください: 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構成に以下を追加します: GXP3

使用法

インストールして構成したら、自然言語を使用して 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 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節

-
security - not tested
A
license - permissive license
-
quality - not tested

ネイティブ アプリの自動分析、デバッグ、逆アセンブルを可能にする LLDB 用の MCP サーバー。

  1. Overview
    1. Features
      1. Installation
        1. Usage
          1. Basic Workflow
          2. Example Commands
        2. Supported Commands
          1. Session Management
          2. Program Loading
          3. Execution Control
          4. Breakpoints and Watchpoints
          5. Inspection
          6. Thread Management
          7. Miscellaneous
        3. Example program
          1. Debugging Tips
            1. Requirements
              1. Troubleshooting
                1. License
                  ID: 9i6b17n41i