5

这是一个相当复杂的问题,目前可用的方法可能根本不可能,但如果有一个简单的方法,这将是巨大的。Javascript中的非破坏断点(trace points)?

我正在调试Chrome中的一些JavaScript,并且因为它是非常事件驱动的,所以我更愿意获取代码的跟踪报告(被调用的内容等)而不是断点。因此,无论我离开断点,我都希望看到本地函数名称和参数。

我能得到的最接近的是在删除一个条件断点,如下所示:

Sample trace

有两个大问题,这种方法:

  1. 粘贴到这个每个断点太麻烦了。如果可以将其选作每个断点的默认操作,则人们更有可能使用它。
  2. 在谷歌浏览器中,日志调用被激发两次。

任何想法克服这些问题?我认为这可能在IE with VS,但在那里的用户界面似乎同样繁琐。

+1

如果你只是需要这个来跟踪DOM事件,你可以尝试使用控制台的''monitorEvents()'](http://www.briangrinstead.com/blog/chrome-developer-tools-monitorevents)方法。 – kpozin 2012-05-05 23:22:59

+0

我实际上曾尝试在一个点上使用monitorEvents,通过为非DOM对象抛出伪事件。你可以通过监视错误获得相当的效果,但它没有我需要的细粒度过滤。 – Chris 2012-05-07 01:53:35

回答

0

我找不到这样做,所以我wrote my own

现在,我不再不断地插入和删除console.log调用,而是在必要时离开登录并仅监视它。

警告:下面的特定代码未经测试。

var debug = TraceJS.GetLogger("debug", "mousemove"); 
$('div').mousemove(function(evt) { 
    debug(this.id, evt); 
}); 

每次鼠标移过一个DIV,它生成一个LOGEVENT标记的[“鼠标移动”,{该元素的ID}]

有趣的部分是能够选择性观看事件。当你想只看到元素#A mousemove事件时,调用控制台以下:

TraceJS('a'); 

当我想看到所有mousemove事件时,您可以拨打:

TraceJS('mousemove'); 

只有事件显示匹配你的过滤器。如果您调用TraceJS(无参数),则会停止显示日志调用。

1

我发现的最佳选择是在Chrome的Javascript面板中编辑javascript代码,添加一个console.log。

它只会在加载页面后才起作用(除非您可以承受在刷新后放置断点并添加记录行)并且(更糟糕的是)每次重新加载时都必须执行该操作页。

祝你好运与您的搜索!

1

IE11现在具有“跟踪点”,独立于Visual Studio。他们正是你三年前所要求的。我没有在Chrome或其他浏览器中看到他们,但希望他们能很快赶上!

+0

酷! https://msdn.microsoft.com/en-us/library/ie/dn255007(v=vs.85).aspx我其实很喜欢我现在建立的图书馆,因为我可以随时留下痕迹点,并将它们根据需要打开和关闭。猜猜这会发生。 – Chris 2015-03-25 21:51:26