An open API service indexing awesome lists of open source software.

https://github.com/mdmintz/pdbp

pdbp (Pdb+): A drop-in replacement for pdb and pdbpp. To replace "pdb", add "import pdbp" to an "__init__.py" file.
https://github.com/mdmintz/pdbp

debugger debugging debugging-tool pdb python-debugger seleniumbase stacktrace traceback

Last synced: 7 months ago
JSON representation

pdbp (Pdb+): A drop-in replacement for pdb and pdbpp. To replace "pdb", add "import pdbp" to an "__init__.py" file.

Awesome Lists containing this project

README

          

# pdbp (Pdb+) [![](https://img.shields.io/pypi/v/pdbp.svg)](https://pypi.python.org/pypi/pdbp)

Pdb+ Advanced Python Console Debugger

**[pdbp (Pdb+)](https://github.com/mdmintz/pdbp)** is an advanced console debugger for Python. It can be used as a drop-in replacement for [pdb](https://docs.python.org/3/library/pdb.html) and [pdbpp](https://github.com/pdbpp/pdbpp).

pdbp (Pdb+) makes Python debugging a lot easier (and more fun!)

--------

## Installation:

```bash
pip install pdbp
```

Then add ``import pdbp`` to an ``__init__.py`` of your project, which will automatically make **``Pdb+``** the default debugger at breakpoints:

```python
import pdbp
```

(If using ``flake8`` for code-linting, you may want to add ``# noqa`` to that line):

```python
import pdbp # noqa
```

You can also make ``pdbp`` the default debugger by setting an environmental variable:

```bash
PYTHONBREAKPOINT=pdbp.set_trace
```

## Usage:

To trigger a breakpoint in your code with ``pytest``, add ``--trace`` (to start tests with a breakpoint) or ``--pdb`` (to trigger a breakpoint if a test fails).

To trigger a breakpoint from a pure ``python`` run, use:

```bash
python -m pdbp
```

--------

Basic **``Pdb+``** console commands:
``n``, ``c``, ``s``, ``u``, ``d`` => ``next``, ``continue``, ``step``, ``up``, ``down``

(To learn more **Pdb+** console commands, type ``help`` in the **Pdb+** console and press ``Enter/Return``.)

--------

**``pdbp`` (Pdb+)** makes improvements to ``pdbpp`` so that it works in all environments. It also includes other bug-fixes. "Sticky" mode is the default option, which shows multiple lines of code while letting you see where you're going (while typing ``n`` + ``Enter``).

If you somehow reset ``pdb`` to Python's built-in version, you can always replace ``pdb`` with **``pdbp``** again as the default debugger by running this:

```python
import pdb
import pdbp
for key in pdbp.__dict__.keys():
pdb.__dict__[key] = pdbp.__dict__[key]
```

Here's how to customize **``pdbp``**/``pdb`` options if you don't like the default settings: (Shown below are the default settings.)

```python
import pdb
if hasattr(pdb, "DefaultConfig"):
pdb.DefaultConfig.filename_color = pdb.Color.fuchsia
pdb.DefaultConfig.line_number_color = pdb.Color.turquoise
pdb.DefaultConfig.truncate_long_lines = False
pdb.DefaultConfig.sticky_by_default = True
```

You can also trigger **``Pdb+``** activation like this:

```python
import pdbp
pdbp.set_trace()
```

### pdbp (Pdb+) commands:

Pdb+ commands

### Post Mortem Debug Mode:

Pdb+ Post Mortem Debug Mode

### The ``where`` / ``w`` command, which displays the current stack:

Example of the 'where' command

--------

### Sticky Mode vs Non-Sticky Mode:

The default mode (``sticky``) lets you see a lot more lines of code from the debugger when active. In Non-Sticky mode, only one line of code is shown at a time. You can switch between the two modes by typing ``sticky`` in the **Pdb+** console prompt and pressing ``Enter/Return``.

> **Sticky Mode:**

Pdb+ Stick Mode

> **Non-Sticky Mode:**

Pdb+ Non-Sticky Mode

--------

### Tab completion:

Pdb+ Tab Completion

--------

### Multi-layer highlighting in the same stack:

Pdb+ Advanced Python Console Debugger

### More examples:

**``Pdb+``** is used by packages such as **``seleniumbase``**:

* https://pypi.org/project/seleniumbase/
* https://github.com/seleniumbase/SeleniumBase

--------

Pdb+ Advanced Python Console Debugger

--------

(**Pdb+** is maintained by the [SeleniumBase Dev Team](https://github.com/seleniumbase/SeleniumBase))