在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语句处添加断点。
- 在下面的控制台中,input
go()
- 并如下所示更改variables值
返回的结果g_n + n + on
是30。
这是Chrome开发工具中的一个公认错误:
萤火虫似乎允许你这样做。
它看起来不像。
放置一个断点,当它停止切换到控制台时,尝试设置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)。