Chrome调试器无法停止

8
我在第44行的代码中添加了断点debugger;。我期望Chrome每次在执行console.log("...")之前都会在这里停止,但令我惊讶的是它只停止了一次。
测试示例:
  1. 在Chrome中运行下面的片段
  2. 打开Chrome Dev工具
  3. 将来自其他网站的图像拖到投放区域
此时,Chrome会在断点处停止。但是,如果您查看控制台,则应该看到console.log语句已执行两次。
我想知道为什么会发生这种情况。(线程问题?)
如果我想在此处调试代码,该如何解决呢?

$(document).ready(function() {

  $('#drop-area').on("dragover", function(event) {
    event.preventDefault();
    event.stopPropagation();
    $(this).addClass('dragging');
  });

  $('#drop-area').on("dragleave", function(event) {
    event.preventDefault();
    event.stopPropagation();
    $(this).removeClass('dragging');
  });

  $('#drop-area').on("drop", function(event) {
    event.preventDefault();
    event.stopPropagation();

    var count = 1;
    var dropObj = event.originalEvent.dataTransfer;
    for (var i = 0; i < dropObj.items.length; i++) {
      var aDropItm = dropObj.items[i];
      if (aDropItm.kind == "file") {
        //ignore
      } else {
        aDropItm.getAsString(function(_str) {
          debugger; //The debugger should stop here every time before the string is printed to the console
          console.log("This was called [" + count++ + "] times");
        });
      }
    }
  });

});
#drop-area {
  background-color: red;
  width: 400px;
  height: 400px;
}
<div id="drop-area">Drop files here...</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

编辑
我在这里报告了一个错误: https://bugs.chromium.org/p/chromium/issues/detail?id=748923


1
仅通过Chromium buglist的快速搜索,发现的唯一错误与源映射有关(ex),这里没有涉及。如果没有人指出我们遗漏了明显的东西,那么可能值得在那里报告。我不会感到惊讶,如果这是优化的结果,尽管看到带有debugger;语句的代码被优化令人惊讶。 - T.J. Crowder
1
我不确定这是一个 bug 还是我的错误。如果我找不到解决方案,我会将其发布到 bug 列表中。 - Lars
在这里添加Chrome Bug的链接,以便其他人可以找到它 :) 这甚至可能被认为是“答案”。 - styfle
1个回答

1
这个问题不再发生了。看起来这是Chrome的一个bug。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接