See++
See++ is a tool for visualizing and debugging C++ code aimed at helping students, educators, and developers understand what their code is actually doing. It takes C++ code and shows a step-by-step execution trace including stack frames, heap memory, and variable values.
Getting Started
Try It Now
- Visualize your code at seepluspl.us, no setup required.
✨ New: Code execution now completes in a few seconds instead of minutes using AWS Lambda! We’ve migrated from container-based execution to serverless Lambda functions for faster, more efficient code visualization.
Run Locally
- Clone the repo via
git clone https://github.com/knazir/SeePlusPlus.git.
- Download and install Docker Desktop.
- Copy
.env.example to .env.
- Run
./localdev.sh up from the root SeePlusPlus/ directory.
- Visit
http://localhost:4000 in your browser and start visualizing your code.
Deploy Your Own
- Clone the repo via
git clone https://github.com/knazir/SeePlusPlus.git.
- Download and install Docker Desktop.
- Install and configure the AWS CLI.
- Run
./copilot/deploy-environment.sh test to deploy to AWS.
For troubleshooting on deployment, additional info can be found in the docs.
Project Goals
|
|
| Education |
Demystify program flow, pointers, recursion, and memory models in C++. |
| Developer Friendly |
Provide a fast alternative when you just need a quick mental model check. |
| Zero Setup |
Run interface entirely in-browser. No compiler, IDE, or configuration needed. Just write and run. |
| Safety |
Allow users to run code in an isolated sandbox without worrying about the impact to others. |
| Open & Extensible |
Fully open source, including the infrastructure required to deploy your own service. |
Features
| Feature |
Description |
| Step Through Execution |
Step forward or backward through each program state. |
| Timeline Scrubbing |
Drag the timeline slider to navigate across steps instantly. |
| Line Number Jumping |
Click a line to jump to its next execution point. Click repeatedly to skip forward through hits. |
| Play Mode |
Animate your code execution with an auto-playing visual trace. |
| Stack Frame Viewer |
Visualize the full call stack and active stack frames over time. |
| Variable Inspector |
See values of all local and stack variables at each step. |
| Heap Memory View |
Explore heap allocations with automatic object grouping. |
| Orphaned Memory Detection |
Highlight heap blocks with no live references (e.g. leaks). |
| Pointer/Reference Tracing |
Follow pointers and references across stack and heap with directional arrows. |
| Automatic Layout |
Smart auto-layout for stack and heap to reduce visual clutter. |
Endorsements
Many students struggle to build a proper mental model of what their code is doing. Tools like See++ that visualize memory, state, and control flow are incredibly valuable — especially for recursion and data structures.
I’m very excited about this project and can’t wait to show it to my students.
— Marty Stepp, Lecturer, Stanford University (CS106A/B/X)
Origins
See++ began as a response to one of the most common struggles in computer science education: helping students understand how C++ code interacts with memory. Seeing the recurring challenges students face with recursion, pointers, and the call stack, See++ was first developed as a CS194 capstone project at Stanford University by a group of teaching assistants. The project was inspired by the observation that drawing program-flow diagrams on a whiteboard was one of the most effective methods to help students understand code. However, these exercises were time-consuming for more complex problems and didn’t scale well as they required TAs to manually draw diagrams step-by-step with students “in the room.”
The project was originally designed to support CS106B: Programming Abstractions students at Stanford, who often found it difficult to visualize dynamic memory, recursive calls, and pointer-based data structures like linked lists and trees in C++.
The original design was incredibly insecure, running untrusted user code directly on an AWS EC2 instance. As expected of a college project, this was left to fester without much consideration. As the maintainers slowly came to their senses over the years, they realized what a terrible, terrible idea it was to keep the service running with no safeguards. To address this, the project was taken offline in March 2025 for a large-scale rewrite to make it more scalable and secure.
The initial rewrite was completed in July 2025 that moved the system from running on a single EC2 instance to a containerized, more-scalable app deployed to AWS and running untrusted user code in isolated sandboxes. The initial container-based approach led to slow execution times (~1-2 minutes) due to container cold starts. In October 2025, we migrated to AWS Lambda for code execution, reducing execution times to 1-3 seconds while maintaining security and isolation.
Today, See++ aims to serve not only students and instructors, but anyone who needs a fast, visual model of C++ code in action.
Roadmap
Ordered from highest to lowest priority.
License
The See++ application — frontend, backend, infrastructure, and docs — is licensed under the MIT License. See LICENSE.
The code-runner/SPP-Valgrind/ submodule is a derivative of GNU Valgrind and remains under the GPL. See code-runner/SPP-Valgrind/COPYING for that license.
Earlier versions of this project carried a single GPL-2.0 license inherited from its dependence on Valgrind. After a 2025–2026 rewrite the See++ application no longer contains Valgrind code (it invokes the Valgrind binary as an external process), so we’ve split the licensing: MIT for everything we wrote, GPL for the Valgrind derivative.
The name “See++” and the associated logo are separate from the code license.
You’re welcome to use them to refer to the project, but not for commercial purposes or in a way that suggests endorsement or affiliation. See TRADEMARK.
Acknowledgements
This project is built on top of @pgbovine’s modifications to Valgrind for tracing C++ program execution. Those modifications and the work on top of them live in SPP-Valgrind, which remains GPL-licensed.
Maintainers
Please direct all quips, qualms, and conundrums to:
Contributors
Many thanks to these wonderful people:
评论