我可以通过控制台关闭 Firefox 选项卡吗?

kar*_*lip 6 firefox freeze threads macos

在那里,当我决定检查代码学院(一个教你如何用 JavaScript 编程的网站,以一种很酷的方式 - 显然)时,我很高兴地使用 Firefox 内置下载管理器从互联网上下载了一堆东西。

因此,在进行了一些练习后,我进入了第 7 课(第 4 项),它要求您填充for循环的条件以将i(循环变量)降为 0。发生的事情是,而不是将循环编写为for (i = 2; i >= 0; i--)触发将带我进入下一课的内置机制,我“错误地”写道for (i = 2; i >= 0; i++),使循环永远持续下去,导致 Firefox 使用 100% 的 CPU,使一切变得模糊,并使我重新加载页面的所有尝试或关闭选项卡。

现在我已经暂停了这个过程kill -STOP <pid>,但我不想关闭 Firefox,因为我正在下载一堆无法恢复的东西,我想知道是否有办法通过命令行关闭这个选项卡。也许有一种方法可以列出所有 Firefox 的线程并尝试单独关闭它们(最坏的情况,我认为 GDB 可以帮助我解决这个问题)。

我目前使用的是 Mac OS X 10.7.2。

Tam*_*man 2

我在 Codecademy 上也做了同样的事情。填写了一些错误的内容并导致了无限循环,Codecademy 似乎并不是为了防止这种不良行为而编写的,因此它会被提升到浏览器。就我而言,浏览器只是捕捉到这一点,并在一段时间后要求停止脚本。我觉得很奇怪,你的情况似乎没有发生这种情况,因此我建议你在解决这个问题后升级 Firefox,这样这种情况就不会再次发生。

恐怕没有办法,只能找到一个巧妙的进程管理工具或附加一个调试器gdb,例如,如果您没有任何调试信息,这可能会变得非常棘手。只需查找 Javascript 执行例程中某处的线程即可。如果您没有调试信息,也没有动态库,我想它将位于xul.so任何选项卡的某个位置。

如果您以某种方式弄清楚下载线程是什么,您可以尝试一一冻结其他线程,以找出哪个是实际的选项卡。在最坏的情况下,冻结线程没有帮助,因为该线程可能持有其他线程正在等待的锁。在这种情况下,您最好终止该进程并重新开始下载。如果可能的话,也许考虑以与浏览器不同的方式进行大量下载......