cli-anything-lldb について
エージェントやエディタークライアント向けの、構造化された LLDB デバッグ用 CLI スキルです。JSON コマンド、永続セッション、stdio の Debug Adapter Protocol サーバーを備えています。
主な機能
- 01JSON によるターゲットとプロセスの操作
- 02ブレークポイントとスレッドの確認
- 03フレーム、式、メモリの操作
- 04コアダンプの読み込み
- 05状態を保持する対話型 REPL
- 06stdio の Debug Adapter Protocol サーバー
活用シーン
- 01実行ファイルのデバッグ自動化
- 02実行中プロセスへのアタッチ
- 03クラッシュとコアダンプの調査
- 04DAP 経由での AI クライアント接続
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hkuds/ cli-anything --skill cli-anything-lldbインストール後、Claude Code で/cli-anything-lldbを入力して読み込まれたか確認します。
詳細
LLDB CLI スキル
この CLI を使用して、JSON 出力を伴う構造化された LLDB デバッグワークフローを実行します。
機能
- 実行可能ファイルのパスからデバッグターゲットを作成
- プロセスを起動、または pid/名前でアタッチ
- ブレークポイントを管理(設定/一覧/削除/有効化/無効化)
- スレッド、フレーム、ローカル変数、バックトレースを検査
- 現在のフレームで式を評価
- プロセスメモリを読み取り/検索
- コアダンプを読み込み
- セッション状態を保持するインタラクティブ REPL
- AI/エディタクライアント向けの正式な stdio Debug Adapter Protocol サーバー
クイックコマンド
cli-anything-lldb --json target create --exe /path/to/exe
cli-anything-lldb --json process launch --arg foo --arg bar
cli-anything-lldb --json breakpoint set --function main
cli-anything-lldb --json breakpoint set --function PluginEntry --allow-pending
cli-anything-lldb --json process continue
cli-anything-lldb --json process interrupt
cli-anything-lldb --json thread backtrace --limit 20
cli-anything-lldb --json frame locals
cli-anything-lldb --json expr "myVar"
cli-anything-lldb --json memory read --address 0x1000 --size 64
cli-anything-lldb --json session close
Debug Adapter Protocol
AI クライアントが、個別の CLI コマンドをシェル経由で実行するのではなく、実際のデバッグアダプターのライフサイクルを必要とする場合は、DAP エントリポイントを使用します。
cli-anything-lldb-dap
cli-anything-lldb-dap --profile /path/to/stop-rules.json
または:
cli-anything-lldb dap
cli-anything-lldb dap --profile /path/to/stop-rules.json
DAP サーバーは stdio の Content-Length フレームで通信し、stdout を排他的に使用する必要があります。その周辺で stdout にログを出力しないでください。サポートされるリクエストには、initialize、launch、attach、configurationDone、setBreakpoints、setFunctionBreakpoints、threads、stackTrace、scopes、variables、setVariable、evaluate、continue、pause、next、stepIn、stepOut、source、loadedSources、readMemory、modules、exceptionInfo、disassemble、disconnect が含まれます。
DAP の変数は、構造体/クラス/配列の子参照を公開できます。setVariable は停止中にのみ使用してください。LLDB は最適化で除去された値や読み取り専用の値への書き込みを拒否する場合があります。
長時間実行される GUI のデバッグ対象の場合、DAP の continue はクライアントから見てノンブロッキングです。アダプターはまず応答と continued イベントを送信し、その後バックグラウンドスレッドで LLDB を待機します。DAP の pause は LLDB の非同期割り込みを使用します。エージェントがデバッグ対象の実行中にブレークポイントを変更する必要がある場合、アダプターはまず割り込みを行い、LLDB のブレークポイントを変更する前に停止状態を待機します。ターゲットが時間内に停止しない場合は、明示的な pause/stopped サイクルの後に再試行してください。
デバッガー内部の起動時ブレークポイントやシェーダー JIT ブレークポイントで停止する GUI アプリの場合、launch と attach は非標準のブール引数 autoContinueInternalBreakpoints を受け付けます。これらの内部停止がタスクにとってノイズである場合にのみ有効にしてください。アダプターは自動継続の前に output イベントを発行します。ターゲット固有のノイズに対しては、インラインの stopRules または外部の stopRuleProfile/--profile JSON ファイルによる構造化された停止ルールを優先してください。ルールは reason、module、function、および/または regex でマッチし、明確な cliAnythingStop.origin メタデータを伴う stop、または自動的な continue のいずれかを行えます。C4D などのアプリにはプロファイルを使用して、その NVIDIA シェーダー JIT/起動時のトラップが汎用アダプターの外に置かれるようにしてください。
DAP の stopped イベントには body.cliAnythingStop.origin が含まれます。クライアントの一時停止リクエストの場合は manualPause、マッチした内部ルールの場合は internalTrap、通常のプログラム停止の場合は debuggee です。既存の cli-anything-lldb-dap プロセスは新しいコードやプロファイルの内容をホットロードしません。新しいルールを適用する前に、アダプターを再起動し、再アタッチまたは再起動してください。
コマンドグループ
target
cli-anything-lldb --json target create --exe /path/to/exe [--arch x86_64]
cli-anything-lldb --json target info
process
cli-anything-lldb --json process launch [--arg ARG ...] [--env KEY=VALUE ...] [--cwd DIR] [--stop-at-entry]
cli-anything-lldb --json process attach --pid 1234
cli-anything-lldb --json process attach --name myapp --wait-for
cli-anything-lldb --json process continue
cli-anything-lldb --json process interrupt
cli-anything-lldb --json process detach
cli-anything-lldb --json process info
breakpoint
cli-anything-lldb --json breakpoint set --function main
cli-anything-lldb --json breakpoint set --file main.c --line 42 --condition "i > 10"
cli-anything-lldb --json breakpoint set --function LateLoadedSymbol --allow-pending
cli-anything-lldb --json breakpoint list
cli-anything-lldb --json breakpoint delete --id 1
cli-anything-lldb --json breakpoint enable --id 1
cli-anything-lldb --json breakpoint disable --id 1
thread / frame / step
cli-anything-lldb --json thread list
cli-anything-lldb --json thread select --id 11111
cli-anything-lldb --json thread backtrace --limit 50
cli-anything-lldb --json frame select --index 0
cli-anything-lldb --json frame info
cli-anything-lldb --json frame locals
cli-anything-lldb --json step over
cli-anything-lldb --json step into
cli-anything-lldb --json step out
expr / memory / core
cli-anything-lldb --json expr "argc"
cli-anything-lldb --json memory read --address 0x1000 --size 128
cli-anything-lldb --json memory find "needle" --start 0x1000 --size 4096
cli-anything-lldb --json core load --path /path/to/core
エージェント利用時の注意事項
- 自動化フローでは常に
--jsonを優先してください。 - 非 REPL の個別呼び出しは、デフォルトで永続セッションデーモンを共有します。
- タスクに対して明示的なセッションを固定するには、
--session-file PATHまたはCLI_ANYTHING_LLDB_SESSION_FILEを使用してください。 - 完了したら
cli-anything-lldb --json session closeを実行し、アタッチされたプロセスをデタッチして、起動したデバッグ対象がクリーンアップされるようにしてください。 - 人間が操作するような対話型シェルのほうが便利な場合は REPL を使用してください。永続化のために必要だからといって使うものではありません。
- 未解決の CLI ブレークポイントはデフォルトで失敗します。将来のモジュール/シンボルのロードが予想される場合にのみ
--allow-pendingを渡してください。 - DAP の未解決ブレークポイントはプロトコルのセマンティクスに従います。解決されるまで
verified: falseとなります。 - DAP の
continueは長時間実行される GUI プロセスに対してノンブロッキングであり、DAP のpauseは非同期割り込みを使用します。 - アクティブな continue 中の DAP ブレークポイント変更は、まず割り込みを行い、停止状態を待ってから LLDB を変更します。
- アプリ固有の内部トラップには DAP のストップルールプロファイルを使用してください。プロファイル変更後は再起動し、再アタッチまたは再起動してください。
memory findは 1 回の呼び出しあたり最大 1 MiB に制限されたチャンクスキャンを使用します。- プロセスまたはコアのコマンドの前に
target createを呼び出してください。 - 構造化エラー
{"error": "...", "type": "..."}が返されることを想定してください。