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.
     
  
- 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.
- Clone the repo via git clone https://github.com/knazir/SeePlusPlus.git.
- Download and install Docker Desktop.
- Copy .env.exampleto.env.
- Run ./localdev.shfrom the rootSeePlusPlus/directory.
- Visit http://localhost:8000in your browser and start visualizing your code.
- 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 testto deploy to AWS.
For troubleshooting on deployment, additional info can be found in the docs.
| 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. | 
| 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. | 
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)
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.
Ordered from highest to lowest priority.
- Speed up code execution in deployed environments (improved from ~1m to 5-10s with Lambda)
- Add caching for code execution in deployed environments
- Add linting for more consistent style and easier contribution
- Create GitHub Issue/PR templates
- Create CONTRIBUTING.md and CLA for contributions
- Create deployment and architecture guides in docs
- Rewrite original 2018 frontend to be more robust, extensible, and use modern web patterns
- Setup GitHub actions for automated deployment
- Add test suite for each service and modified Valgrind
- Add smart assist features to help better understand your code and flow
- Add support for other languages (C, Python, JavaScript, and more)
We welcome PRs and issue reports of all sizes! We're still getting a CONTRIBUTING.md guide and contributor license agreement setup, but feel free to explore the project and experiment in the meantime.
See++ is open source software, licensed under the GNU General Public License v2.0 (GPL-2.0).
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.
For more details, see LICENSE and TRADEMARK.
This project is based on the modifications made by @pgbovine to Valgrind to trace C++ program execution. These modifications and the work on top of them can be found in our linked repo SPP-Valgrind. This project is licensed under GPL-2.0 as a derivative work.
Please direct all quips, qualms, and conundrums to:
|  Kashif Nazir | 
Many thanks to these wonderful people:
|  Kashif Nazir |  Ashley Taylor |  Lucy Wang |  Maria Yang |  Michael Chang | 
