我正在调试一个javascript应用程序(使用Chrome开发工具),并且希望在逐步执行代码时更改一些变量值。
那有可能吗?
我已经尝试过并得到类似的东西:
> modeline
1
> modeline=0
0 <<< seems to work but...
> modeline
1 <<< ups!!
但是我找不到任何文档说明什么可以做或不能做...
我正在调试一个javascript应用程序(使用Chrome开发工具),并且希望在逐步执行代码时更改一些变量值。
那有可能吗?
我已经尝试过并得到类似的东西:
> modeline
1
> modeline=0
0 <<< seems to work but...
> modeline
1 <<< ups!!
但是我找不到任何文档说明什么可以做或不能做...
Answers:
按照MikaëlMayer的回答,这不再是问题,而且我的回答已经过时了(go()
现在30
在调解控制台后返回)。根据上面gabrielmaldi的评论中链接的错误报告,此问题已在2013年7月修复。这使我感到震惊,我仍在投票-让我认为投票者既不理解问题也不知道我的答案。
我会离开这里我原来的答复由于历史的原因,但去给予好评麦克尔的答案,而不是。
诀窍是您不能直接更改局部变量,但可以修改对象的属性。您还可以修改全局变量的值:
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()
设置断点并在控制台中运行这些调用之后的结果,您会发现结果为20,而不是0(但不幸的是,不是30)。
1
已记录。错误是什么?您希望记录什么?
a
将“作用域”面板中的值更改为任何值(例如42),然后恢复:记录1
现在可以在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
}
右键单击代码段名称,然后单击“运行”(尽管这不会触发该功能)
go()
返回的结果g_n + n + o.n
是30。
这是Chrome开发工具中公认的错误:
Firebug似乎允许您这样做。
我可以通过在控制台中进行分配来修改脚本变量值。似乎最简单。
我遇到了同样的问题,转到“关于Google Chrome浏览器”->帮助,它说我需要重新启动浏览器以获取最新更新。
我这样做了,突然之间,我现在可以更改局部变量了。只需在“范围变量”窗口中单击要编辑的变量,然后输入新值。
但是,我确实注意到了一些奇怪之处,即在我可以更改右侧窗口中的文本(范围变量)之前,我不得不跳过一些不相关的var分配。
modeline
来的?