无限dubug实质上不属于死循环,只是设置了定时的debugger调试
死循环的情况浏览器占用会崩溃
debugger 常在 函数 或者 eval 中
处理 debugger 通常
setInterval_back = setInterval
setInterval = function(a,b){
if (a.toString().indexOf(“debugger”) == -1){
return setInterval_back(a,b)
}
}
如果业务中流程与 setInterval 无关
绕过 debugger 则可直接制空
setInterval = function(){}
直接添加条件断点
或者
fiddler 直接替换 js 文件
当操作function实现dubugger时,可直接修改原型
Function.prototype.constructor_bc = Function.prototype.constructor
Function.prototype.constructor = function(){
if (arguments === “debugger”){}
else{
return Function.prototype.constructor_bc.apply(this,arguments)
}
}
重写eval
eval_bc = eval
eval = function(a){
if (a === “debugger….”){}
return eval_bc(a)
}
向上找堆栈,在处罚无限debugger时,把触发函数制空