# Python Faulthandler Module

The `faulthandler` module contains functions to dump Python tracebacks explicitly, on a fault, after a timeout, or on a user signal. It is useful for debugging crashes like segmentation faults.

## Importing the Module

```python
import faulthandler
```

## Enabling Faulthandler

To enable the fault handler, call `enable()`. This installs handlers for `SIGSEGV`, `SIGFPE`, `SIGABRT`, `SIGBUS`, and `SIGILL` to dump the traceback.

```python
import faulthandler

faulthandler.enable()
```

## Dumping Traceback Explicitly

You can dump the traceback of all threads explicitly.

```python
import faulthandler
import sys

faulthandler.dump_traceback(file=sys.stdout, all_threads=True)
```

## Dumping Traceback After a Timeout

You can schedule a traceback dump after a specific timeout (in seconds). This is useful for debugging deadlocks or infinite loops.

```python
import faulthandler
import time

faulthandler.dump_traceback_later(timeout=2, repeat=False)

# Simulate a long-running task
time.sleep(3)
```

## User Signals

You can register a signal to dump the traceback. (Note: `SIGUSR1` is typically available on Unix systems).

```python
import faulthandler
import signal

if hasattr(signal, 'SIGUSR1'):
    faulthandler.register(signal.SIGUSR1)
```

[[programming/python/python]]