The PyDev.Debugger (pydevd) is a Python debugger backend designed for IDE integration and remote debugging. It provides core debugging capabilities including breakpoints, stepping, variable inspection, and expression evaluation. The architecture features a client/server model for remote debugging, with in-process tracing via settrace(). Key entry points include pydevd.py (main debugger), pydevd_attach_to_process (live process attachment), and pydevconsole.py (interactive console). The debugger supports multiple protocols (legacy line-based and JSON/DAP for VS Code integration) and employs Cython optimizations with fallbacks to pure Python. It includes extensive test suites covering edge cases like multiprocessing, async, GUI event loops, and framework-specific integrations (Django, Flask). The code demonstrates strong modularity through extension points for custom variable rendering and plugin architecture.
chrome-remote-interface is a well-crafted Node.js library that provides a clean, dynamic API for interacting with the Chrome DevTools Protocol (CDP). It connects to a remote debugging endpoint (e.g., Chrome with --remote-debugging-port), fetches the full protocol descriptor dynamically, and generates typed JavaScript methods and events for every domain, command, and notification. The library supports callback and Promise patterns, includes a comprehensive CLI with an interactive REPL, and works across multiple implementations (Chrome, Node.js, Edge, Firefox, etc.). It does not bundle a browser; instead, it focuses on low-level protocol access, making it a foundational tool for browser automation, debugging, and custom DevTools clients.
jsconsole is a web-based JavaScript REPL and remote debugging tool. The frontend is a React (Preact-compat) single-page application with Redux state management, allowing users to type and execute JavaScript commands in a sandboxed iframe. Results are rendered with a rich type-aware display that supports expand/collapse for objects, arrays, functions, promises, and more. The backend is a Node.js/Express server that serves the static build and provides real-time communication via Server-Sent Events (SSE) for remote debugging sessions. Users can start a remote session (listen) to bridge console.log calls from another browser or device back to the main console, and also inject commands remotely. Architecturally, the codebase follows a standard client-server model with a React SPA. It makes clever use of AST parsing (via Babylon) in the `preProcess` function to handle JavaScript declarations (const/let) and async/await in the REPL, transforming input so that eval returns the final expression value. The backend uses a lightweight custom SSE session manager (`lib/es.js`) that could be extracted for other real-time projects. However, the project is technically very dated, with React 15, Webpack 2, and many other dependencies from 2017-2018. Despite this, the core REPL logic and type-rendering components are well-architected and could serve as a reference implementation for similar tools.