Est-il possible de modifier les valeurs des variables javascript lors du débogage dans Google Chrome?
je suis en train de déboguer une application javascript (en utilisant les outils de développement Chrome), et je voudrais changer quelques valeurs variables tout en parcourant le code.
Est-ce possible?
j'ai essayé et j'ai obtenu quelque chose comme:
> modeline
1
> modeline=0
0 <<< seems to work but...
> modeline
1 <<< ups!!
mais je suis incapable de trouver une documentation qui indique ce qui peut ou ne peut pas être fait...
10 réponses
pourquoi cette réponse suscite-t-elle encore des critiques?
Per la réponse de Mikaël Mayer , ce n'est plus un problème, et ma réponse est obsolète ( go()
retourne maintenant 30
après avoir sali la console). Ceci a été corrigé en juillet 2013, selon le rapport de bug lié ci-dessus dans commentaire de gabrielmaldi . Ça m'inquiète que je sois encore en train de faire des upvotes - ça me fait penser que l'upvoter ne comprendre la question ou ma réponse.
je laisse ici ma réponse originale pour des raisons historiques, mais upvote la réponse de Mikaël au lieu de .
l'astuce est que vous ne pouvez pas changer une variable locale directement, mais vous pouvez modifier les propriétés d'un objet. Vous pouvez également modifier la valeur d'une variable globale:
var g_n = 0;
function go()
{
var n = 0;
var o = { n: 0 };
return g_n + n + o.n; // breakpoint here
}
de la console:
> g_n = 10
10
> g_n
10
> n = 10
10
> n
0
> o.n = 10
10
> o.n
10
vérifiez le résultat de go()
après avoir paramétré le point de rupture et lancé ces appels dans la console, et vous verrez que le résultat est 20, plutôt que 0 (mais malheureusement pas 30).
c'est désormais possible dans chrome 35 (aujourd'hui à partir du 11 juillet 2014). Je ne sais pas quelle version l'a permis en premier.
vient de tester @gilly3 exemple sur ma machine et il fonctionne.
-
ouvrir la console, dans
Sources
et l'ongletSnippets
, ajouter un nouvel extrait, y coller le code suivant:var g_n = 0; function go() { var n = 0; var o = { n: 0 }; return g_n + n + o.n; // breakpoint here }
-
clic droit sur le nom du morceau, cliquez sur ' Run ' (cela ne déclenche pas la fonction cependant)
- ajouter le point de rupture à la déclaration de retour.
- dans la console ci-dessous, tapez
go()
- et modifier les valeurs variables comme démontré ci-dessous
et le résultat retourné g_n + n + o.n
est 30.
il s'agit d'un bogue reconnu dans les outils de Chrome Dev:
on dirait que non.
mettre un point de rupture, quand il arrête de passer à la console, essayer de régler la variable. Il n'y a pas d'erreur lorsque vous lui Assignez une valeur différente, mais si vous la lisez après la cession, elle n'est pas modifiée. :- /
en fait, il y a une solution. Copiez la méthode entière, modifiez son nom, par exemple originalName() vers originalName2() mais Modifiez la variable à l'intérieur pour prendre la valeur que vous voulez, ou la passer en paramètre.
alors si vous appelez cette méthode directement depuis la console, elle aura la même fonctionnalité mais vous pourrez modifier les valeurs variables.
si la méthode est appelée automatiquement, tapez à la place dans la console
originalName = null;
function originalName(original params..)
{
alert("modified internals");
add whatever original code you want
}
je suis capable de modifier une valeur variable de script par assignation dans la Console. Semble plus simple.
Je ne sais pas pourquoi chrome team n'autorise pas cette fonctionnalité idiote ... mais le seul moyen que je puisse changer les valeurs variables avec succès est de modifier le script directement dans l'éditeur de chrome sous L'onglet" Sources " (cela change le comportement de votre script jusqu'à ce que vous rafraîchissiez la page), mais que les changements seront perdus lors du rafraîchissement, alors soyez prudent.
j'avais le même problème, je suis allé à L'aide "à propos de Google Chrome" ->et il a dit que je devais redémarrer mon navigateur pour obtenir les dernières mises à jour.
j'ai fait cela, et soudainement, je peux maintenant changer les variables locales. Cliquez simplement sur la variable que vous voulez éditer dans la fenêtre des Variables Scope, et tapez votre nouvelle valeur.
j'ai remarqué quelques bizarreries cependant, que j'ai dû enjamber quelques assignations var sans rapport avant de pouvoir modifier le texte dans le fenêtre de droite (Variables Scope).
Oui! Enfin!!! Je l'ai juste essayé avec Chrome, Version 66.0.3359.170 (Officiel) (64 bits) sur Mac.
Vous pouvez modifier les valeurs dans les champs que dans la première image, ou avec la console comme sur la deuxième photo.