在Google Chrome中进行debugging时,是否可以更改javascriptvariables值?

我正在debugging一个JavaScript应用程序(使用Chrome开发工具),并且我想在遍历代码的同时更改一些variables值。

这是可能的吗?

我曾尝试过,并得到如下的东西:

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

但我无法find任何文件,说明什么可以或不可以做…

为什么这个答案仍然upvotes?

根据MikaëlMayer的回答 ,这不再是一个问题,我的回答已经过时了( go()现在在用控制台分离后返回30 )。 根据gabrielmaldi的评论中的错误报告 ,这个问题在2013年7月得到修正。 它让我惊讶,我仍然得到了提升 – 让我觉得upvoter不明白这个问题或我的答案。

由于历史的原因,我会留下原来的答案,但是请提出Mikaël的回答


诀窍是你不能直接改变一个局部variables,但你可以修改一个对象的属性。 您还可以修改全局variables的值:

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

安慰:

 > g_n = 10 10 > g_n 10 > n = 10 10 > n 0 > on = 10 10 > on 10 

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

现在可以在铬35(今天截至2014年7月11日)。 我不知道哪个版本首先允许它。

刚刚在我的机器上testing过@ gilly3例子,它工作。

  • 打开控制台,在Sources和选项卡Snippets ,添加一个新的代码片段,粘贴下面的代码:

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

  • 用鼠标右键单击片段名称,单击“运行”(虽然这不会触发该function)

  • 在return语句处添加断点。
  • 在下面的控制台中,inputgo()
  • 并如下所示更改variables值

功能允许本地修改。

返回的结果g_n + n + on是30。

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

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

萤火虫似乎允许你这样做。

它看起来不像。

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

其实有一个解决方法。 复制整个方法,修改它的名字,例如originalName()为originalName2(),但修改里面的variables来取任何你想要的值,或者把它作为参数传入。

然后,如果直接从控制台调用此方法,它将具有相同的function,但您将能够修改variables值。

如果该方法被自动调用,则改为input到控制台中

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

我可以通过控制台中的赋值来修改脚本variables值。 看起来最简单。

我不知道为什么chrome团队不允许这个愚蠢的function…但我可以用成功改变variables值的唯一方法是直接在chrome编辑器的“Sources”选项卡下修改脚本(这改变了你的脚本,直到你刷新页面),但更新将刷新时丢失,所以要小心。

我遇到了同样的问题,进入“关于谷歌浏览器” – >帮助,它说我需要重新启动浏览器才能获得最新的更新。

我这样做,突然间,我现在可以改变局部variables。 只需在“范围variables”窗口中单击要编辑的variables,然后input新值即可。

但是我注意到了一些古怪的东西,我不得不在一些不相关的variables赋值之前改变右边的窗口中的文本(范围variables)。