在Google Chrome中调试时是否可以更改javascript变量值?

tat*_*ato 74 javascript debugging google-chrome

我正在调试一个javascript应用程序(使用Chrome开发工具),我想在单步执行代码时更改一些变量值.

这有可能吗?

我试过并得到类似的东西:

> modeline
1
> modeline=0
0             <<< seems to work but... 
> modeline
1             <<< ups!!
Run Code Online (Sandbox Code Playgroud)

但我找不到任何文件说明可以做什么或不可以做什么......

Mik*_*yer 58

现在可以使用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()
  • 并更改变量值,如下所示

允许本地修改的功能.

返回的结果g_n + n + o.n是30.

  • 不适用于镀铬49.0.2623.87米.[截图](http://imgur.com/2bXsAWU) (9认同)
  • 似乎在49.0.2623.108中也被打破[截图](http://imgur.com/rPwCyqg) (4认同)
  • 你是对的.这个功能刚好破了. (3认同)

gil*_*ly3 39

为什么这个答案仍然得到了回报?

根据MikaëlMayer的回答,这不再是一个问题,而且我的答案已经过时了(go()现在30在使用控制台捣乱后返回).根据gabrielmaldi评论中上面链接的错误报告,这在2013年7月修复.它告诉我,我仍然得到了投票 - 让我觉得upvoter不理解问题或我的答案.

出于历史原因,我会在这里留下我的原始答案,但请改为使用Mikaël的答案.


诀窍是您不能直接更改局部变量,但可以修改对象的属性.您还可以修改全局变量的值:

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

安慰:

> g_n = 10
  10
> g_n
  10
> n = 10
  10
> n
  0
> o.n = 10
  10
> o.n
  10
Run Code Online (Sandbox Code Playgroud)

go()在设置断点并在控制台中运行这些调用后检查结果,你会发现结果是20,而不是0(但遗憾的是,不是30).

  • 我赞成,因为你的答案符合["一个好的答案"]的所有标准(http://stackoverflow.com/help/how-to-answer)*和*你提到另一个答案,提供更新,更好的信息,其中 - 来自一个公认的答案 - 让它立即可信.那谢谢啦.并享受赞成! (3认同)

bri*_*ris 7

这是Chrome开发工具中公认的错误:

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

  • 它已经在Chrome版本49.0.2623.87中破坏了(再次).如果您想提升其重要性,请登录上述链接并为问题加注星标. (3认同)

Tyl*_*ier 7

是的!最后!我刚刚在 Mac 上使用 Chrome 版本 66.0.3359.170(官方版本)(64 位)进行了尝试。

您可以像第一张图片那样更改示波器中的值,或者像第二张图片那样使用控制台更改值。

Chrome 调试器更改值

在此处输入图片说明


Vla*_*IGA 5

好像没有。

放一个断点,当它停止时切换到控制台,尝试设置变量。当您为其分配不同的值时不会出错,但如果您在分配后阅读它,则它没有被修改。:-/


Bob*_*obo 5

Firebug 似乎允许您这样做。

  • 我真的很想念歌剧蜻蜓-____- (5认同)
  • IE 和 Opera Dragonfly 也是如此。 (3认同)