tiempo significa real quitar que paused modificar editar debugger debuggear debug como chrome javascript debugging

significa - modificar javascript en tiempo real chrome



Al depurar javascript, ¿hay alguna forma de alertar a la pila de llamadas actual? (7)

Para la depuración simple de javascript usaré alertas para mostrar valores variables y similares. ¿Hay alguna manera de obtener la pila de llamadas actual en javascript para poder mostrarla en una alerta?

Gracias.


¿Has mirado firebug y un punto de quiebre? Si es solo para la depuración, entonces esto podría ser suficiente.

También puedes echar un vistazo Here


En Firefox + Firebug y WebKit puedes usar console.trace()

No muestra una alert() pero imprime el stacktrace de stacktrace en la consola.


Esto te dará toda la pila de llamadas funcionando bien para mí.

var y = ''arguments.callee.caller''; while (eval(y) != undefined) { stak += eval(y + ''.toString()''); y = y + ''.caller''; } alert(stak);


La mejor manera de depurar Javascript es usar Firebug , que incluye un depurador de Javascript completo.

Si está depurando en IE, puede usar Visual Web Developer Express (o cualquier otra edición de Visual Studio).
Si está depurando IE8, puede usar sus herramientas de desarrollador integradas, que incluyen un depurador.

Es posible obtener la pila de llamadas en Javascript; ver here


Para la depuración de nodejs, en Visual Studio Code, a partir de v.1.14.2, es Ver-> Depurar (Ctrl + Shift + D)


Rápido y sucio en los navegadores basados ​​en Gecko:

new Error().stack

También puede rastrear manualmente parte de la pila usando Function.prototype.caller:

var thisFunction = arguments.callee; var caller = thisFunction.caller; var callerCaller = caller.caller; // ...and eventually, assuming no recursion: var bottomCaller = ...; assert(bottomCaller.caller === null);

Una advertencia (posiblemente grande) del truco .caller es que no maneja la recursión: .caller mira desde la parte superior de la pila hacia abajo para encontrar la primera instancia de la función en la pila y luego devuelve su llamador inmediato, por lo que sin tener cuidado, puede hacer un bucle infinitamente buscando llamadores.

Otra advertencia para la caller que caller es que, en el futuro, si alguno de sus códigos utiliza el modo estricto de ECMAScript 5, la propiedad de la caller de las funciones de modo estricto (o de funciones a las que se ha llamado desde funciones de modo estricto) es una llamada "píldora venenosa". "que lanza un TypeError cuando se accede. La propiedad que caller de las funciones "vinculadas" (aquellas creadas por el método Function.prototype.bind de ES5) también es una píldora venenosa. Estas restricciones rompen el algoritmo genérico de desplazamiento de la pila, aunque uno podría imaginar formas específicas de uso para solucionar esto (funciones de anotación de entrada y salida, tal vez).

Tenga en cuenta que el apilamiento como este no es una gran idea en el código de producción (como un truco rápido para la depuración está bien, aunque); en este momento, subir la pila como en el último ejemplo es algo costoso en el motor JS de Mozilla, y probablemente lo sacará del código de la máquina y lo volverá a incluir en el código interpretado. Además, el stack-walk es O (n 2 ), lo que podría ser importante si tiendes a tener pilas complejas y profundas.