我为我的学生写了一个浏览器内的java-esque调试器(http://www.kapparate.com/kj/。点击启用javascript的浏览器中的编译按钮),我想弄清楚什么是可视化的最佳方式当前范围内的变量。现在,我将它们打印为JSON:
6 KJDB> 7 STACK {"x":"hello","y":"hello","a":4,"z":5,"xx":-5.6400000000000015,"c":true,"intArray":[5,90,35,45,150,3]}
因此,它代表x,y,a,z,xx,c和intArray。各自的价值也是如此。
然而,我的一些学生在中学,这种表示法有时令人困惑。我应该使用一个表(每一行是一个不同的变量?)。或者也许用图形表示变量的矩形?
答案 0 :(得分:0)
两列表,包含名称和值。当您谈到方法调用和可能的递归时,您可能希望使用不同的边框来标记不同的堆栈帧。或者,您可以使用包含方法名称的单个列标题标记堆栈帧。
答案 1 :(得分:0)
我的教授在我的CS入门课程中做的是绘制一个非常宽的矩形来表示计算机的内存,然后将其分成列(所以一行任意长,然后是许多列,也是任意宽度) 。
无论何时创建变量,他都会使用一个小块来表示变量或表示对该变量的引用。例如,int
变量只占用一个小列或“块”内存。但是对于int[]
变量(或通过引用而不是通过值传递的任何其他类型的变量),他将绘制一个块来表示引用,然后在该行下方绘制另一个块来表示实际值。他只需绘制箭头以显示较小的块引用较大的块。