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
}
右键单击代码段名称,单击"运行"(虽然这不会激活该功能)
go()
返回的结果g_n + n + o.n是30.
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).
这是Chrome开发工具中公认的错误:
http://code.google.com/p/chromium/issues/detail?id=124206
是的!最后!我刚刚在 Mac 上使用 Chrome 版本 66.0.3359.170(官方版本)(64 位)进行了尝试。
您可以像第一张图片那样更改示波器中的值,或者像第二张图片那样使用控制台更改值。