[英]chrome: How to abort a script that is stopped at `debugger` statement?
考虑以下愚蠢的示例:
<!doctype html>
<meta charset="utf-8">
<title>dumb snippet</title>
<script>
var i = 0;
while (i < 100) {
console.log(i);
debugger;
i += 1;
}
</script>
如果我使用Google Chrome的DevTools运行此代码,则调试器会在debugger
语句中忠实地停止执行,但是我没有找到立即终止(并重新启动)脚本的任何方法。 AFAICT,按Ctrl-R
甚至Shift-Ctrl-R
而不是重新加载页面,只会导致执行继续。
我发现的唯一方法是显而易见的,但是不必要地不方便:完全杀死选项卡/窗口,然后打开一个新的选项卡/窗口。
Google Chrome DevTools是否提供某种方法来立即中止在debugger
语句中停止的脚本?
(如果答案碰巧是“否”,请不要发布解决方法。我可以想到很多解决方法,例如,按住F-8直到循环退出,尽管这样当然行不通,事实证明这是一个无限循环。无论如何,在这里,我只关心是否有一种“官方”方法来中止并重新启动此类脚本。)
您可以做到,但必须先准备好代码。
在Google Chrome开发者工具中暂停脚本执行的说明:
(1)创建一个全局变量:
var devquit=0;
$(document).ready({
//the rest of your code
(2)在您可能希望退出的任何地方,插入对此变量的测试:
//Lotsa code
if (devquit > 0) return false;
(3)在上述测试行之前或之前暂停脚本的执行
(4)切换到控制台
(5)类型:
> devquit
0
> devquit=1 <=== only this line is necessary
> devquit
1
(6)继续执行脚本。 脚本从上面的步骤(2)执行测试时将return false
笔记:
(A)此技巧适用于全局变量和对象,但不适用于局部变量。
(B)因此, 如果您具有全局变量或对象(如果具有给定值则返回false),则仍可以对已经运行的代码使用此技巧。
(C)在紧要关头,您还可以从DOM中删除元素(在元素选项卡上),这将导致JavaScript错误。 例如,假设您有代码var cartype = $('#cartype').val();
如果在该行代码之前删除ID = cartype
的元素,则js将在该行中断。 但是,当您尝试重新运行代码时,该元素仍然会丢失。 上述技巧可让您无限次地运行和重新运行代码。
更多说明:
(a)在代码中插入断点:只需键入debugger;
一条线上。 如果打开DevTools,该脚本将在此时跳入调试器。 如果未打开DevTools,则代码将忽略语句。
(b)想要避免在调试代码时跳入jQuery库吗? 黑匣子吧。 查看Chrome的黑盒说明 -或-Firefox
感激(请访问并投票):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.