No me he encontrado con un depurador así, aunque no parece que este estilo en particular sea demasiado difícil de escribir solo. Solo una función recursiva básica que pasa en el objeto actual y una celda de la tabla para comenzar a escribir también, luego simplemente construye sobre la marcha.
En cuanto al comentario circular de referencia anterior, esto se puede eludir fácilmente manteniendo una matriz de objetos que ya ha procesado. Antes de procesar un objeto, verifique si ya está en la lista. si es así, denote eso en el campo de valor de su salida como algo así como "referencia circular" ... sin embargo, quiere denotar el objeto en la jerarquía.
prettyprint(object, processedObjects)
{
if (processedObjects.contains(object))
return 'circular refernece';
processedObjects.push(object);
create newTable;
for (var in object)
{
row = newTable.addRow();
row.cell1.value = var;
if (typeof object[var] is object)
row.cell2.value = prettyprint(object[var], processedObjects);
else if (typeof object[var] is function)
row.cell2.value = '[function]';
else
row.cell2.value = object[var].toString();
}
return newTable;
}
Interesante pregunta, aunque me pregunto cómo funcionaría una impresora tan bonita para las referencias circulares ... –