Débogage javascript: existe-t-il un moyen de modifier un changement de valeur variable?

Comme d'autres questions ici, comme celle-ci .

Existe-t-il un moyen de briser la modification d'une valeur variable dans n'importe quel débogueur javascript? (Comme les outils Developer de IE, Visual Studio ou Firebug?)

Je suppose que c'est quelque chose comme une «variable de surveillance», mais je veux pouvoir voir le calltack et l'arrêter lorsque la modification de la variable se produit réellement.

Une approche alternative pourrait être de remplacer le paramètre de valeur par un programmeur personnalisé, et de mettre un point d'arrêt dans ce domaine, mais malheureusement cela ne fonctionnera pas pour IE afaik.

MISE À JOUR Il semble que ce type de comportement soit disponible au moins pour un code non géré écrit en C ++. Je pensais peut-être qu'un moteur javascript écrit en C ++ (Google V8) pourrait avoir quelque chose de similaire, mais cela ne semble pas avoir ce que je veux non plus.

Vous n'avez même pas besoin d'un IDE – vous pouvez utiliser "Object.watch ()":

Didacticiel Object.Watch

Si vous utilisez un débogueur, je recommande vivement Firebug. Pour tous vos besoins Javascript, HTML et CSS :-):

http://getfirebug.com/javascript

Je suis en train de réussir avec cette bibliothèque dans Chrome et il cherche à supporter tous les principaux navigateurs.

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

Ajoutez simplement le fichier .js, puis appelez:

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

Je ne sais pas si j'ai mal compris votre question. Si vous souhaitez regarder une expression et arrêter quand elle atteint une certaine valeur lors d'une session de débogage js dans Chrome Developer Tools, elle est plutôt banale.

Vous pouvez simplement mettre un point d'arrêt sur la ligne où la valeur que vous souhaitez vérifier est alors, cliquez avec le bouton droit de la souris et sélectionnez "Modifier point d'arrêt …". Une boîte de dialogue apparaîtra en demandant une expression, où l'exécution s'arrêtera lorsque sa valeur est vraie.

Par exemple, disons que vous avez une boucle et que vous ajoutez une unité à une variable à l'intérieur et souhaitez arrêter l'exécution lorsque la variable est égale à 3. L'expression en boucle ressemblerait à ceci:

n = i++;

Vous devez définir votre point d'arrêt sur cette ligne et l'expression à regarder (après avoir été invité par "Modifier le point d'arrêt …") serait n == 3 . Lors de l'exécution de votre code, il s'arrêtera lorsque votre variable atteindra cette valeur.

Vous remarquerez que votre état est défini car votre point d'arrêt devient orange au lieu de bleu.