【问题标题】:How to debug JavaScript asynchronously? (many scripts are loading)如何异步调试 JavaScript? (许多脚本正在加载)
【发布时间】:2012-04-16 10:11:49
【问题描述】:

通常我知道如何设置断点、检查变量、进入函数等...

Default.htm 包含数百个脚本和空的 占位符。

理想情况下,我希望逐步进行。像这样在第一行设置断点是行不通的:

当我跳过下一个函数调用时,它早已消失(一切都已加载)。

一般如何调试异步加载脚本? (时间线清楚地表明它们正在同时加载)

也许我应该使用诸如 Fiddler 之类的 HTTP 代理?我知道如何设置简单断点(BPU)然后呢?

换句话说 - 哪种方法 - How can I debug my JavaScript code? - 适合我的需求?

【问题讨论】:

  • 尽管它们是同时加载的,但很可能它们是一个接一个地执行的(在 1 个线程中),只需在每个线程的第一行添加一个断点,您就可以逐步执行- 从那里开始
  • 实际上,即使您的方法也应该适用于恕我直言。试一试:当您停在第一行时,在控制台中输入一些变量。我很确定它仍然是未定义的,因为虽然网络层可能已经完成下载它,但尚未评估 javascript。随着您一步一步地进行,您确实应该能够看到它逐行评估
  • 使用 PHPStorm、Netbeans 等 IDE 或在 Firefox 上使用 Firebug、Chrome 开发工具和一些 Internet Explorer 开发工具
  • 我尝试使用这种方法 - 文件太多了,其中大多数都是(function ($) { $.fn.extend({ DisplayPane: function () { 的形式,理想情况下我希望单击查看所有请求、操作和流量。
  • 评论越来越乱,显然我只能在提交后立即编辑。 @joberror - 我正在使用开发工具,请参阅随附的屏幕截图。问题是 - 同时加载了 50 个脚本,我想看看那里实际发生了什么。我想加载顺序并不重要。也许我可以在 DOM 修改上设置断点?无论哪种方式 - 感谢您的建议!

标签: javascript ajax debugging fiddler google-chrome-devtools


【解决方案1】:

如果您使用的是 chrome 开发工具:

  1. 让网站加载
  2. 在你的js的入口处放一个断点。 (如果你不知道它在哪里,而是在 Sources 选项卡下每个文件的最外层范围的断点。
  3. F5(刷新网页)
  4. 被击中的第一个断点是您的入口点。 F11 - 进入,F10 = 跨过。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2012-10-01
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多