Romper un cambio de valor variable

Similar a otras preguntas aquí, como esta .

¿Hay alguna manera de romper con el cambio de un valor variable en cualquier depurador de JavaScript? (como IE Developer tools, Visual Studio o Firebug)?

Supongo que es algo así como una “variable de observación”, pero quiero poder ver la stack de llamadas y ponerla en pausa cuando ocurra realmente el cambio en la variable.

Un enfoque alternativo podría ser anular la configuración del valor con un setter personalizado, y poner un punto de interrupción en eso, pero desafortunadamente eso no funcionará para IE AFAIK.

ACTUALIZACIÓN Parece que este tipo de comportamiento está disponible al menos para el código no administrado escrito en C ++ Así que pensé que tal vez un motor de JavaScript escrito en C ++ (V8 de Google) podría tener algo similar, pero que no parece tener lo que quiero tampoco.

Ni siquiera necesita un IDE: puede usar “Object.watch ()”:

Object.Watch Tutorial

Si usa cualquier depurador, recomiendo Firebug. Para todas sus necesidades de Javascript, HTML y CSS :-):

http://getfirebug.com/javascript

Estoy teniendo éxito con esta biblioteca en Chrome y parece ser compatible con todos los principales navegadores.

https://gist.github.com/eligrey/384583

Simplemente incluya el archivo .js, luego llame:

 yourObject.watch('someProperty', function() { doWhatYouWant(); debugger; console.write('this too'); alert('Object Changed'); //etc }); 

No sé si malinterpreté tu pregunta. Si desea ver una expresión y detenerse cuando alcanza cierto valor mientras está en una sesión de depuración de js en Herramientas para desarrolladores de Chrome, es bastante trivial.

Simplemente puede poner un punto de interrupción en la línea donde está el valor que desea verificar, luego haga clic con el botón derecho del mouse y seleccione “Editar punto de interrupción …”. Aparecerá un cuadro de diálogo solicitando una expresión, donde la ejecución se detendrá cuando su valor sea verdadero.

Por ejemplo, supongamos que tiene un bucle y está agregando una unidad a una variable dentro de él y desea detener la ejecución cuando la variable es igual a 3. La expresión en bucle sería así:

n = i++;

Debe establecer su punto de interrupción en esa línea y la expresión para mirar (después de lo indicado por “Editar punto de interrupción …”) sería n == 3 . Cuando ejecuta su código, se detendrá allí cuando su variable scope ese valor.

Notarás que tu condición está configurada porque tu punto de interrupción se vuelve naranja en lugar de azul.