web-dev-qa-db-ja.com

Google Chromeでデバッグ中にJavaScript変数値を変更することは可能ですか?

Javascriptアプリをデバッグしています(Chrome devツールを使用)。コードをステップ実行しながら変数値を変更したいです。

それはまったく可能ですか?

私は次のようなものを試しました:

> modeline
1
> modeline=0
0             <<< seems to work but... 
> modeline
1             <<< ups!!

しかし、私は何ができるかできないかを述べた文書を見つけることができません...

74
tato

なぜこの回答がまだ賛成票を獲得しているのですか?

ミカエル・メイヤーの答え ごとに、これはもはや問題ではなく、私の答えは時代遅れです(go()はコンソールをいじった後に_30_を返すようになりました)。これは、上記の gabrielmaldiのコメント にリンクされている バグレポート に従って、2013年7月に修正されました。それは私がまだ賛成票を得ていることを私に警告します-賛成票が質問または私の答えを理解していないと思わせます。

歴史的な理由でここに元の答えを残しますが、賛成になります ミカエルの答え 代わりに


秘Theは、ローカル変数を直接変更できないが、オブジェクトのプロパティを変更できることです。グローバル変数の値を変更することもできます。

_var g_n = 0;
function go()
{
    var n = 0;
    var o = { n: 0 };
    return g_n + n + o.n;  // breakpoint here
}
_

コンソール:

_> g_n = 10
  10
> g_n
  10
> n = 10
  10
> n
  0
> o.n = 10
  10
> o.n
  10
_

go()の結果を確認して、ブレークポイントを設定し、コンソールでそれらの呼び出しを実行すると、結果は0ではなく20になります(悲しいことに、30ではありません)。

39
gilly3

これはchrome 35(今日は2014年7月11日現在)で可能になりました。最初に許可されたバージョンはわかりません。

私のマシンで@ gilly3の例をテストしたところ、動作します。

  • SourcesおよびタブSnippetsでコンソールを開き、新しいスニペットを追加して、次のコードをそこに貼り付けます。

    var g_n = 0; function go() { var n = 0; var o = { n: 0 }; return g_n + n + o.n; // breakpoint here }

  • スニペット名を右クリックし、「実行」をクリックします(ただし、関数は起動しません)

  • Returnステートメントにブレークポイントを追加します。
  • 以下のコンソールで、go()と入力します
  • 以下に示すように変数値を変更します

function with local modification allowed.

返された結果g_n + n + o.nは30です。

58
Mikaël Mayer
7
brianpeiris

Firebugはそれを可能にしているようです。

4
Bobo

そうではないようです。

ブレークポイントを設定し、コンソールへの切り替えを停止したら、変数を設定してみます。別の値を割り当ててもエラーにはなりませんが、割り当て後に読み取った場合は変更されません。 :-/

4
Vlad GURDIGA

はい!最後に! MacのChromeバージョン66.0.3359.170(公式ビルド)(64ビット)で試しました。

最初の図のようにスコープの値を変更するか、2番目の図のようにコンソールで値を変更できます。

Chrome debugger change values

enter image description here

2
Tyler Collier

実際には回避策があります。メソッド全体をコピーし、名前を変更します。 originalName()からoriginalName2()に変更しますが、内部の変数を変更して必要な値を取得するか、パラメーターとして渡します。

次に、このメソッドをコンソールから直接呼び出すと、同じ機能を使用できますが、変数値を変更できます。

メソッドが自動的に呼び出される場合、代わりにコンソールに入力します

originalName = null;
function originalName(original params..)
{
    alert("modified internals");
    add whatever original code you want
}
2
mdubez

コンソールでの割り当てにより、スクリプト変数の値を変更できます。最も単純なようです。

2
Jeff Lowery

なぜchromeチームがこの馬鹿げた機能を許可しないのかはわかりませんが、変数の値を正常に変更できる唯一の方法は、chromeで直接スクリプトを変更することです「ソース」タブの下のエディター(これにより、ページを更新するまでスクリプトの動作が変更されます)が、更新するとその変更は失われるため、注意してください。

1
LeonardoX

私は同じ問題を抱えていたので、「Google Chromeについて」->ヘルプに行き、最新のアップデートを入手するにはブラウザを再起動する必要があると言っていました。

これを行ったところ、突然、ローカル変数を変更できるようになりました。 [スコープ変数]ウィンドウで編集する変数をクリックし、新しい値を入力します。

しかし、右側のウィンドウ(スコープ変数)のテキストを変更する前に、いくつかの無関係なvar割り当てをステップオーバーする必要があるという奇妙な点に気付きました。

0
GilesDMiddleton