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...

68
demandé sur GreenGiant 2011-01-05 13:27:08

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).

38
répondu gilly3 2017-05-23 11:55:07

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'onglet Snippets , 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

function with local modification allowed.

et le résultat retourné g_n + n + o.n est 30.

46
répondu Mikaël Mayer 2016-09-12 15:47:07

il s'agit d'un bogue reconnu dans les outils de Chrome Dev:

http://code.google.com/p/chromium/issues/detail?id=124206

7
répondu brianpeiris 2013-04-05 19:36:49

Firebug semble vous permettre de le faire.

4
répondu Bobo 2011-07-25 18:03:39

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. :- /

2
répondu Vlad GURDIGA 2011-01-05 10:37:33

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
}
2
répondu mdubez 2012-12-07 23:32:56

je suis capable de modifier une valeur variable de script par assignation dans la Console. Semble plus simple.

2
répondu Jeff Lowery 2015-04-14 17:59:19

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.

1
répondu LeonardoX 2013-02-18 02:25:56

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).

0
répondu GilesDMiddleton 2013-05-22 11:18:49

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.

Chrome debugger change values

enter image description here

0
répondu Tyler Collier 2018-05-29 06:03:14