无限 debugger 处理

无限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时,把触发函数制空