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.
Use el depurador como Firebug para esto si está en Firefox. Chrome y Opera tienen un depurador incorporado. Y hay herramientas de desarrolladores para Internet Explorer.