Javascript中的非破坏断点(跟踪点)?

Chr*_*ris 6 javascript debugging trace google-chrome google-chrome-devtools

这是一个相当复杂的问题,对于目前可用的内容来说可能根本不可能,但如果有一种简单的方法可以实现,那将是巨大的.

我在Chrome中调试了一些JavaScript,并且因为它是事件驱动的,所以我更喜欢获取代码的跟踪报告(被调用的内容等)而不是断点.所以无论我在哪里留下断点,我都希望看到本地函数名和参数.

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

样本跟踪

这种方法存在两个大问题:

  1. 将其粘贴到每个断点中太麻烦了.如果可以将其选为每个断点的默认操作,则人们更有可能使用它.
  2. 在Google Chrome中,日志调用会被触发两次.

有任何想法可以克服这些问题吗?我认为在IE中使用VS可能是可能的,但UI看起来同样麻烦.

Chr*_*ris 0

我找不到可以做到这一点的东西,所以我自己写了。

现在,我不再不断地插入和删除 console.log 调用,而是保留登录状态,仅在必要时查看它。

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

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

每次鼠标移到 DIV 上时,它都会生成一个标记为 ["mousemove", {id of that element}] 的日志事件

有趣的部分是能够有选择地观看事件。当您只想查看元素 #a 的 mousemove 事件时,请在控制台中调用以下命令:

TraceJS('a');
Run Code Online (Sandbox Code Playgroud)

当我想查看所有mousemove事件时,可以调用:

TraceJS('mousemove');
Run Code Online (Sandbox Code Playgroud)

仅显示与您的过滤器匹配的事件。如果您调用 TraceJS(无参数),日志调用将停止显示。