{"id":3734,"library":"pdbpp","title":"pdb++ (pdbpp)","description":"pdb++ (pdbpp) is a robust, drop-in replacement for the standard Python debugger, `pdb`. It enhances the debugging experience with features like colorful TAB completion (via fancycompleter), optional syntax highlighting (via Pygments), a persistent 'sticky' mode that always shows the current code context, and smart command parsing. It aims for full compatibility with `pdb` while adding significant quality-of-life improvements. The current version is 0.12.1, with ongoing maintenance and updates.","status":"active","version":"0.12.1","language":"python","source_language":"en","source_url":"https://github.com/pdbpp/pdbpp","tags":["debugger","pdb","debugging","developer-tool","python"],"install":[{"cmd":"pip install pdbpp","lang":"bash","label":"PyPI"},{"cmd":"conda install -c conda-forge pdbpp","lang":"bash","label":"Conda"}],"dependencies":[{"reason":"Provides colorful TAB completion for Python expressions.","package":"fancycompleter","optional":false},{"reason":"Enables optional syntax highlighting for code listings and sticky mode.","package":"Pygments","optional":true},{"reason":"Required for the 'exec_if_unfocused' configuration option, which executes a shell command when the debugger prompt starts and the terminal is unfocused.","package":"wmctrl","optional":true}],"imports":[{"wrong":"import pdb; pdb.set_trace()","symbol":"Pdb","correct":"from pdbpp import Pdb"},{"wrong":"import pdb; pdb.set_trace()","symbol":"set_trace","correct":"from pdbpp import set_trace"},{"symbol":"break_on_setattr","correct":"from pdbpp import break_on_setattr"}],"quickstart":{"code":"import pdb\n\ndef my_function(a, b):\n    result = a + b\n    pdb.set_trace()  # Execution will pause here\n    return result\n\nif __name__ == '__main__':\n    print(my_function(5, 3))","lang":"python","description":"Install `pdbpp`, then simply use `import pdb; pdb.set_trace()` anywhere in your code. When execution reaches this line, a `Pdb++` interactive prompt will appear, offering advanced debugging features. You can then use commands like `n` (next), `s` (step), `c` (continue), `l` (list), and `sticky`."},"warnings":[{"fix":"Manually remove `pdb.set_trace()` calls or use conditional breakpoints. Many teams search for 'pdb.' before commits.","message":"Leaving `pdb.set_trace()` calls in production code will halt program execution unexpectedly. Always remove or comment out breakpoints before deploying.","severity":"gotcha","affected_versions":"All versions"},{"fix":"To force a command when ambiguity exists, prefix it with `!!` (e.g., `!!c` to execute `continue`).","message":"pdb++'s 'smart command parsing' prioritizes local variables over debugger commands if they share the same name (e.g., a variable `c` vs. the `continue` command).","severity":"gotcha","affected_versions":"All versions"},{"fix":"Upgrade `pdbpp` to version 0.12.1 or higher to ensure full compatibility with Python 3.11+ for `python -m pdb` usage.","message":"Older versions of `pdbpp` experienced compatibility issues with `python -m pdb` when running on Python 3.11 and newer versions.","severity":"breaking","affected_versions":"<=0.12.0 (specifically affected 3.11+)"},{"fix":"Be aware of potential feature limitations in non-local terminal environments. Direct terminal interaction offers the best experience.","message":"When `pdbpp` is used in remote debugging setups (e.g., with `remote-pdb`), advanced features like 'sticky mode' and TAB completion may not function correctly due to terminal environment differences.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Refer to the official PyPI page and GitHub repository for the latest maintenance status and release information.","message":"Some online resources might suggest that `pdbpp` is unmaintained. This is often a misunderstanding; while `pdbp` (a separate project) builds upon `pdbpp` and offers its own enhancements, `pdbpp` itself continues to be actively maintained with recent releases and GitHub activity.","severity":"gotcha","affected_versions":"N/A (confusion-related)"}],"env_vars":null,"search_vec":"'0.12.1':70 'ad':59 'aim':52 'alway':41 'code':45 'color':26 'command':49 'compat':55 'complet':28 'context':46 'current':44,67 'debug':21,78 'debugg':16,76 'develop':80 'developer-tool':79 'drop':9 'drop-in':8 'enhanc':19 'experi':22 'fancycomplet':30 'featur':24 'full':54 'highlight':33 'improv':65 'life':64 'like':25 'mainten':73 'mode':39 'ongo':72 'option':31 'pars':50 'pdb':1,3,17,57,77 'pdbpp':2,4 'persist':37 'pygment':35 'python':15,82 'qualiti':62 'quality-of-lif':61 'replac':11 'robust':7 'show':42 'signific':60 'smart':48 'standard':14 'sticki':38 'syntax':32 'tab':27 'tool':81 'updat':75 'version':68 'via':29,34","created_at":"2026-04-11T17:42:26.574788+00:00","updated_at":"2026-04-16T17:56:36.494356+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.12.1","cli_name":"pdb","cli_version":"sh: 1: pdb: not found","type":"library","homepage":null,"github":"https://github.com/bretello/pdbpp","docs":null,"changelog":null,"pypi":"https://pypi.org/project/pdbpp/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["testing"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-30","last_verified":"2026-08-29","next_check":"2026-07-30","install_tag":null}}