# Python Extensions

LLDB provides scriptable extensions to augment the debugger's capabilities.
This gives users the ability to tailor their debugging experience to their own needs.

This page describes some of these scripting extensions:

## Operating System Thread Plugins

```{eval-rst}
.. automodule:: lldb.plugins.operating_system

.. automodsumm:: lldb.plugins.operating_system
    :classes-only:
    :toctree: python_api
    :skip: ScriptedThread
```

## Scripted Frame Provider Plugins

```{eval-rst}
.. automodule:: lldb.plugins.scripted_frame_provider

.. automodsumm:: lldb.plugins.scripted_frame_provider
    :classes-only:
    :toctree: python_api
    :skip: ABCMeta
```

## Scripted Process Plugins

```{eval-rst}
.. automodule:: lldb.plugins.scripted_process

.. automodsumm:: lldb.plugins.scripted_process
    :classes-only:
    :toctree: python_api
    :skip: ABCMeta
```

## Scripted Platform Plugins

```{eval-rst}
.. automodule:: lldb.plugins.scripted_platform

.. automodsumm:: lldb.plugins.scripted_platform
    :classes-only:
    :toctree: python_api
    :skip: ABCMeta
```

## Scripted Thread Plan Plugins

```{eval-rst}
.. automodule:: lldb.plugins.scripted_thread_plan

.. automodsumm:: lldb.plugins.scripted_thread_plan
    :classes-only:
    :toctree: python_api
```
