Python Tutor is designed to imitate what an instructor in an introductory programming class draws on the blackboard:
Instructors use it as a teaching tool, and students use it to visually understand code examples and interactively debug their programming assignments.
Quick links:
The screenshot below shows how a typical user (either an instructor or a student) would interact with it:
LinkedList
.main()
along with 4 recursive calls to init()
.LinkedList
instance with first
and last
fields pointing to its first and last Node
instances, respectively. Each Node
has a numerical value and a next
pointer.Node
constructor (line 5) has run 3 times.The user can navigate forwards and backwards through all execution steps, and the visualization changes to match the run-time state of the stack and heap at each step. In this example, the user would see their custom LinkedList
data structure getting incrementally built up one Node at a time via recursive calls to init()
until the base case is reached when n==0
.
Despite its name, Python Tutor is also a widely-used web-based visualizer for Java that helps students to understand and debug their code. It visualizes the majority of object-oriented programming concepts taught in introductory college courses (e.g., CS1 and CS2), high school AP Computer Science, and intermediate-level Java programming.
Python Tutor is also a widely-used web-based visualizer for C and C++ meant to help students in introductory and intermediate-level courses. It uses Valgrind to perform memory-safe run-time traversal of data structures, which lets it display data more accurately than gdb or printf debugging. For instance, it can precisely visualize critical concepts such as pointers, uninitialized memory, out-of-bounds errors, nested arrays/structs/unions, type punning, and bit manipulation.
Lastly, it also supports visualizing standalone JavaScript execution, but not web frontend code that does DOM manipulation on webpages.
Recall that Python Tutor is designed to imitate what an instructor in an introductory programming class draws on the blackboard:
Thus, it is meant to illustrate small pieces of self-contained code that runs for not too many steps. After all, an instructor can't write hundreds of lines of code, draw hundreds of data structures and pointers, or walk through hundreds of execution steps on the board! Also, code in introductory classes usually doesn't access external libraries. If your code can't fit on a blackboard or presentation slide, it's probably too long to visualize effectively in Python Tutor. This tool is not meant as a professional-level debugger.
Due to this ultra-focused design, the following features are not supported on purpose:
#break
comments (example)#pythontutor_hide
to selectively hide objects
(example)Other general unsupported features:
argv[]
) not supported; use hard-coded strings insteadstderr
probably won’t work; use print statements to print to stdout
For a detailed list of unsupported features for each programming language, view the full documentation here.
The issue you’re encountering is likely listed in this document. If you're sure it's not, use the "Generate permanent link" button to make a URL of your code. Describe the expected behavior when running that code on your computer and how it differs from Python Tutor, then fill out this Google Form to report your bug or security issue.