有些网站为了防止调试,在js里加入很多debugger()语句, 动态生成代码, 定时执行.手动设置断点无效.
解决方案,一种是在js编译的时候,直接内容替换把所有debugger()替换成空,还可以直接屏蔽debugger()语句,
firefox 里debugger()语句是单独一个断点类型(DebuggerStatement)
源码:FIREFOX_118_0b8_RELEASE里修改是这样的
diff
diff --git a/js/src/vm/Interpreter.cpp b/js/src/vm/Interpreter.cpp
--- a/js/src/vm/Interpreter.cpp
+++ b/js/src/vm/Interpreter.cpp
@@ -4238,9 +4238,11 @@ bool MOZ_NEVER_INLINE JS_HAZ_JSNATIVE_CA
END_CASE(Instanceof)
CASE(Debugger) {
+/* disabled
if (!DebugAPI::onDebuggerStatement(cx, REGS.fp())) {
goto error;
}
+*/
}
END_CASE(Debugger)
编译过程
Firefox Contributors' Quick Reference --- Firefox Source Docs documentation
只编译了FIREFOX_118_0b8_RELEASE (linux/ubuntu版本)