2017-01-09 89 views
0

我有两个应该运行相同的程序。他们不是。我想看看他们的执行发生在哪里。在Chrome或Firefox或Safari中有没有一个选项可以在执行时记录/回显每一行JavaScript?或者其他一些方法来做到这一点手动添加每隔几行console.log?注意:分歧是10k或20k,可能是10万行深,理想情况下我希望它能打印类似于Chrome开发工具的变量。有没有办法在执行JavaScript时回显每一行JavaScript?

然后,我可以只转储日志,找到发散

通过在调试器中调试代码是不是因为它会需要几个小时甚至几天步远的解决方案。

一个想法是使用babel或uglify插件来使用最后一行为每行发出代码来打印它将要做什么或刚刚做了什么。

另一个想法是如果有一种方法可以从js转储所有内存,以便我可以比较所有对象和所有引用。他们应该是相同的,所以当我看到两个不同的转储时,我会发现我的错误。注意:JSON.stringify不是一个选项,因为我需要查看所有变量/对象/类等

注意:我不是在寻找像“使用console.log”或“调试器中的步骤”这样的基本答案, 。我很感激这个帮助,也许我忽略了一些简单的东西,但是我确实有很多JavaScript体验。

也许一个例子会有所帮助。想象一下,您的应用程序的源代码与Google文档一样大。你在它上面运行一些处理器,不应该破坏任何东西或改变任何东西。除了它。你看看这些变化,看不出有什么不对。你所知道的是,当你运行它时,它会运行,但有几件事情会被微妙地破坏。所以你在那里放一个断点,看看数据是不好的。但是它什么时候变坏?你不知道代码(你刚刚得到它)。它可能已经是数千行之前的100多行了。你不知道在哪里放置断点或console.logs。这可能需要几周时间。但是,如果您知道代码应该完全相同,如果您可以打印所有执行行,您会在几分钟而不是几天内找到该错误。

+10

没有,但你可以设置一个破发点,并通过代码走或手动添加的console.log线。 – epascarello

+0

您可以阅读[Chrome开发者工具步骤代码](https://developers.google.com/web/tools/chrome-devtools/javascript/step-code) –

+0

使用调试器和二进制搜索来找到偏差点应该可行。 – Bergi

回答

3

你可以在开始function(),或者你想去的地方和打开控制台添加debugger;

当到达debugger时,它停止执行。之后,您可以逐步执行代码并添加一些手表。

它适用于所有最近的浏览器。

例子:

function test() 
 
{ 
 
var rand = Math.random(); 
 
debugger; 
 
return rand; 
 
} 
 

 
test();

+0

谢谢你的回答,但这不是对这个问题的回答。问题不在于如何调试,问题是*有没有一种方法可以在执行JavaScript时回显每一行JavaScript?* – gman

相关问题