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의 모델 컨텍스트 프로토콜(MCP)을 통합하는 도구입니다. 이 통합을 통해 Claude는 LLDB 디버깅 세션을 직접 시작, 제어 및 상호 작용하여 AI 지원 디버깅 워크플로를 구현할 수 있습니다.

이 도구는 다음을 포함하여 LLDB 작업을 위한 포괄적인 명령 세트를 제공합니다.

  • LLDB 세션 시작 및 관리
  • 디버깅을 위한 프로그램 로딩
  • 중단점 및 감시점 설정
  • 프로그램 실행 제어
  • 메모리, 레지스터 및 변수 검사
  • 스택 추적 및 프로그램 상태 분석

특징

  • 여러 LLDB 디버깅 세션을 만들고 관리합니다.
  • 실행 파일을 로드하고 실행 중인 프로세스에 연결합니다.
  • 사후 분석을 위해 코어 덤프 파일 로드
  • 임의의 LLDB 명령 실행
  • 프로그램 실행에 대한 세밀한 제어
  • 메모리 검사 및 분해
  • 스레드 및 스택 프레임 검사

설치

  1. 저장소를 복제합니다.지엑스피1
  2. 종속성 설치:
    pip install mcp
  3. LLDB-MCP 서버를 사용하도록 Claude를 구성합니다.
    • Claude 데스크톱 앱 구성을 엽니다.
    • MCP 구성에 다음을 추가하세요: GXP3

용법

설치 및 구성이 완료되면 Claude를 통해 자연어를 사용하여 LLDB와 상호 작용할 수 있습니다.

기본 워크플로

  1. 새로운 LLDB 세션을 시작합니다
  2. 프로그램 로드
  3. 중단점 설정
  4. 프로그램을 실행하세요
  5. 변수와 메모리 검사
  6. 제어 실행(계속, 단계, 다음 등)
  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를 사용해야 합니다.

요구 사항

  • 파이썬 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