前面两篇我们对性能做了一个优化,接下来继续来丰富调试器的特性. 我们前面提到过,函数内并不是所有行都是有效行,空行和注释行就不是有效行.我们之前在添加断点的时候,并没有对行号进行检查,任何行号都能成功添加断点.所以如果添加的断点行号是无效的,那么永远也不会断到那里.但是钩子里并不知道它是无效的,call事件仍然会以为函数有断点从而启动line事件,造成CPU的浪费. 所以本篇,我们将对断点的行号进行检查,对于不在函数范围内的行号直接添加断点失败:在函数范围内的行号则自动修正为下一个有效的行号:另…