Debug-gym is a framework for developing and evaluating AI agents that perform interactive debugging of software. It provides a Gymnasium-inspired environment where agents can use tools like a debugger (pdb), file viewer, editor, and shell to inspect and modify code in order to fix bugs. The framework supports multiple execution backends (local, Docker, Kubernetes) to ensure isolation and reproducibility, and integrates with various LLM providers through a unified interface. The system is designed around a loop of observation, action, and feedback: the agent observes the current state (e.g., code, test output), selects a tool to apply (e.g., set a breakpoint, edit a file), and receives the outcome from the environment. This enables the creation of agents that can learn to debug or be evaluated on debugging benchmarks such as SWE-Bench and Mini-Nightmare. The framework also includes analysis tools for visualizing agent trajectories and logging experiment results, supporting both development and research use cases. Key architectural features include a plugin-based tool system, abstract terminal and LLM interfaces, and a secure workspace for code manipulation. These components are designed to be modular and extensible, allowing researchers and developers to plug in new tools, environments, or language models with minimal changes to the core loop.
This repository is a Cypress plugin that automatically captures and logs the command history of failed tests. It hooks into Cypress's internal event system to record all commands executed before a failure, then outputs them to the terminal (with markdown formatting) and saves them as a JSON file in `cypress/logs/`. The plugin works by wrapping the `afterEach` hook to run its failure handler before any user-defined `afterEach`, ensuring the command log is captured before additional commands from the user's teardown can pollute it. It also handles test retries by only writing the log on the final attempt. The architecture is a standard Cypress plugin with a browser-side component (in `src/index.js`) that captures commands and a Node-side task (registered via `on.js` and `src/failed.js`) that prints the formatted output. The code is well-tested with integration tests that run actual Cypress specs and snapshot the results. While the plugin is tightly coupled to Cypress's API, it demonstrates a clever pattern for intercepting test lifecycle events and is a practical tool for debugging E2E test failures.
Chisel is a collection of LLDB commands for debugging iOS and macOS applications. It provides a rich set of commands to inspect and manipulate the UI hierarchy, view controllers, accessibility, auto layout, animations, and memory. The project consists of Python scripts that define LLDB commands using a custom base class (FBCommand) and a native C/Objective-C framework (Chisel.framework) that enables heap scanning for Objective-C instances. The Python layer evaluates Objective-C expressions in the debugged process, while the native framework uses malloc zone enumeration to find live objects. The architecture is a plugin for LLDB, with commands loaded dynamically from a directory. Key entry points are the LLDB commands themselves (e.g., pviews, pvc, visualize, border, findinstances). External dependencies include LLDB, the iOS/OS X runtime, UIKit, CoreAnimation, and Foundation. The codebase is well-structured but shows some technical drift (Python 2 usage, deprecated imp module, old Xcode project settings).
DWARF Explorer is a cross-platform GUI utility for visualizing DWARF debugging information in executable files. Built on PyQt6, pyelftools, and filebytes, it allows users to open ELF, Mach-O, PE, WASM, and ar files to browse their DWARF debug information tree. The application provides views for DIEs (Debugging Information Entries), attributes, references, and includes specialized tools for analyzing locals at addresses, function maps, data sections, frame information, and unwind data. The architecture follows a modular design with clear separation between the GUI layer (PyQt6-based interface in __main__.py and ui.py) and the DWARF analysis logic. Core functionality includes parsing various binary formats via formats.py, building and navigating the DIE tree through tree.py and die.py, and performing specialized analyses using utilities in dwarfutil.py, locs.py, and other modules. The application supports features like following DIE references, searching by conditions, highlighting DIEs, and exporting C skeletons. Key strengths include robust error handling with crash reporting, support for multiple binary formats and DWARF versions (including experimental v1 support), and thoughtful UI design with keyboard navigation, bookmarking, and detailed views. The code demonstrates good practices in separating concerns, with reusable components like the Mach-O unwind parser that could be extracted for use in other projects.
TitanEngine is a Windows-native C/C++ library for reverse engineering, debugging, and unpacking PE executables. It provides a large exported C API covering process debugging (create/attach/detach, breakpoints, stepping), memory and register manipulation, PE file parsing and modification (sections, imports, exports, relocations, TLS), hooking (code redirection, IAT patching), import reconstruction (IAT scanning, dump fixing via integrated Scylla wrapper), anti-debugging evasion, and static file analysis (hashes, decompression). The codebase is primarily a monolithic DLL with hundreds of functions, tightly coupled to the Windows NT API and undocumented structures. It is the core engine behind the x64dbg debugger's unpacking and import-repair capabilities. While the library is functionally complete and has been battle-tested, it exhibits significant technical debt: heavy use of global mutable state, non-reentrant functions, manual memory management, hardcoded OS-specific offsets, and monolithic functions (e.g., DebugLoop). Some subsystems—such as the breakpoint handler, memory I/O with breakpoint bypass, file mapping utilities, and the self-contained ntdll.h header—demonstrate high craftsmanship and are reusable in other projects. The integration of scylla_wrapper and distorm adds well-engineered components for import scanning and disassembly, but overall the codebase requires careful use due to thread-safety and maintenance concerns.
Wirebrowser is an Electron desktop application that provides an integrated runtime instrumentation platform for web applications, built entirely on the Chrome DevTools Protocol (CDP). In production, it acts as a unified debugger, memory inspector, network interceptor, and automation runner for JavaScript running in Chromium-based browsers. The application launches a headless or headful Chrome instance via Puppeteer-core, attaches CDP debuggers to multiple pages, and presents a rich GUI (React, Ant Design, Monaco Editor, AG Grid) through an Electron window. The architecture follows a modular event-driven design: core back-end modules (Heap, Debugger, Network, Automation) are loaded by a ModuleManager and communicate with the front-end via custom DOM events and Electron IPC. The debugger module implements a sophisticated hook system that injects user-defined JavaScript callbacks on function entry/leave/return without monkeypatching, using CDP breakpoints and a state machine to serialize asynchronous events. The heap module supports both live object search (via injected QueryObjects) and offline snapshot analysis with object similarity matching (Jaccard/Dice/SimHash) for origin tracing. Key data flows include user-defined automation scripts (Node-side or browser-side) that interact with pages through the WB.Node and WB.Browser APIs, network requests that can be intercepted and modified in real-time, and memory snapshots that are queried for structural matches across multiple snapshots (BDHS). External dependencies are heavy: Puppeteer (bundled Chrome), AG-Grid (community), Monaco Editor, Ant Design, lowdb, and several CDP-specific features that lock the tool to Chromium. The project is primarily targeted at security researchers, reverse engineers, and advanced frontend developers who need introspection beyond standard DevTools.
This is a monorepo (Yarn Berry workspaces) serving as a comprehensive educational resource for frontend fundamentals, maintained by the Korean fintech company Viva Republica (Toss). It comprises multiple VitePress documentation sites covering code quality, accessibility, debugging, and bundling, along with a real React application ('today-i-learned') that demonstrates the principles by using GitHub Discussions as a backend for a community TIL blog. The repository also includes a Claude Code plugin (frontend-fundamentals-plugin) that evaluates code against these principles using automated grading tasks. The architecture is documentation-centric with a shared navigation component, multi-language support (Korean, English, Japanese, Chinese), and Vercel serverless functions for GitHub OAuth and GraphQL API proxying. The TIL app is a production-grade React SPA (Vite, React Query, Panda CSS, Radix UI) that features post creation, comments, reactions, streaks, and weekly challenges. While the code is well-structured and the educational content is high-quality, much of the code is tightly coupled to the documentation context or the TIL app's specific domain, limiting broad reuse. The repository is actively maintained with recent commits and responsive issue management.
Android Debug Database is an Android library that provides a web-based interface for debugging databases and shared preferences in Android applications. When included in an app's debug build, it starts a lightweight HTTP server that serves a web UI allowing developers to inspect databases, run SQL queries, edit data directly, and manage shared preferences. The architecture consists of a core library (debug-db-base) that handles server logic and database interactions, with optional modules for encrypted database support (debug-db-encrypt) and sample applications demonstrating usage. The system uses a client-server model where the server runs inside the Android app and the client is a standard web browser connecting via HTTP to localhost. Key features include support for SQLite databases, Room databases (including inMemory), SharedPreferences, and SQLCipher-encrypted databases, with a responsive web interface built using Bootstrap, jQuery, and DataTables.
NSLogger is a remote logging framework for Apple (iOS, macOS, tvOS) and Android platforms. It consists of client libraries (C/Objective-C Swift wrapper for Apple, Java for Android) that send structured log messages (text, binary data, images) over TCP to a desktop viewer application. The desktop viewer (macOS app) provides real-time log viewing with filtering, color coding, search, marks, export, and preference management. An iPad viewer application also exists for on-device log viewing with Core Data persistence and Bluetooth support. The codebase includes multiple Xcode projects for different targets, test apps, and vendored third-party libraries (BWToolkit, HockeySDK-Mac, SSSelectableToolbar). While functional and well-known (4.9k stars), the project shows significant age: manual memory management (non-ARC), duplicated viewer logic across Desktop and iPad, incomplete features (JSON message format stubbed), outdated dependencies, and deprecated API usage. It remains a valuable reference for implementing a custom binary logging protocol and network transport layer, but would require modernization for current platform versions.