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

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

当时我正在用 Firefox 内置的下载管理器从互联网上下载一堆东西,心情很愉快,然后我决定检查一下代码学院(显然,这是一个以很酷的方式教您如何用 JavaScript 进行编程的网站)。

因此,在做了一些练习之后,我到了第 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。

答案1

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

恐怕除了找到一个天才的进程管理工具或附加一个调试器(如),没有别的办法了,gdb但是如果您没有任何调试信息,这可能会变得非常棘手。只需查找位于 Javascript 执行例程中某处的线程即可。如果您没有调试信息和动态库,我猜它会在某个地方,xul.so可能是任何选项卡。

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

答案2

只需单击关闭选项卡图标并等待,一旦获得 CPU 时间,它就会关闭它。或者ctrl-w在窗口处于活动状态时按(一次),然后等待。

答案3

您使用的是 Windows 吗?如果是,您可以(可以想象)使用 ProcessExplorer 来锁定行为不当的线程并终止它们 - 只需查找持续的 CPU/内存消耗和 JavaScript 函数名称。但要非常小心 - 这应该是精密手术。

在其他操作系统上,您可以使用调试器来实现相同的功能 - 但这相当麻烦。

相关内容