0

我有一个 HTML 页面,其中包含一些被黑的脚本,其中包含类似的内容,例如

setTimeout(function () {
    window.location = window.location;
}, 3000);

但是假设这个页面使用了大量缩小的 JS 并跨越多个文件,使用 Chrome/Firefox 开发人员工具,如何从多个文件中发现上述代码部分?即停止执行并在当前运行的行上中断?

4

2 回答 2

0

如果代码很大且您不知道,则一种选择是使用 Profiler。

Chrome devtools 中有一个“配置文件”选项卡,Firefox devtools 中有一个“性能”选项卡。这些工具中的每一个的行为都非常相似,因为您开始录制,然后等待(或在页面上执行您知道会导致脚本运行的任何操作),然后停止录制。

中间的面板将显示在该时间段内运行的所有脚本的调用树,其中的列应该可以告诉您更多关于花费时间的信息。使用该调用树,您可以深入了解确切执行的内容,然后从那里跳转到脚本中的实际行。

这是chrome devtools profiler 文档页面,这是 firefox devtools 对应的页面。

使用 firefox devtools 的另一种选择是跟踪器。跟踪器是一种记录在 javascript 级别发生的所有事情的工具:调用了哪些函数、传递了哪些参数、返回了哪些值、这些函数又调用了哪些函数……

要检查它:

  • 在Firefox中打开about:config,然后将pref“devtools.debugger.tracer”切换为true。
  • 然后打开 devtools 并切换到调试器面板。
  • 然后单击双箭头图标,在暂停/跨步/步入/退出按钮旁边。
  • 这将启动跟踪并将侧栏切换到“跟踪”面板。
  • 再次单击以结束录制。

你应该看到执行了什么的痕迹。如果单击跟踪中的任何条目,您将看到相关的脚本,并在侧栏中看到参数和返回值。

于 2014-09-25T19:31:58.680 回答
0

“spot(ting) 上面的代码部分”“stop(ping) the execution and break on the current running line”是完全不同的事情。

spot(ting) 上面这段代码

要在各种源文件中的任何位置查找代码,您可以使用 Chrome 的开发工具的全局搜索功能:

  1. 打开开发工具(F12、Ctrl+Shift+I 或通过菜单)

  2. 切换到源窗格

  3. 按 Ctrl+Shift+F(在 Mac 上可能是 Cmd+Shift+F)

  4. 输入您要查找的内容

停止(ping)当前运行行的执行和中断

  1. 打开开发工具(F12、Ctrl+Shift+I 或通过菜单)

  2. 切换到源窗格

  3. 单击暂停按钮(看起来像两个垂直条)

开发工具应该在尝试运行的下一段 JavaScript 上中断(根据本页上的developer.chrome.com)。

于 2014-09-20T09:42:29.377 回答