前面两篇我们对性能做了一个优化,接下来继续来丰富调试器的特性。
我们前面提到过,函数内并不是所有行都是有效行,空行和注释行就不是有效行。我们之前在添加断点的时候,并没有对行号进行检查,任何行号都能成功添加断点。所以如果添加的断点行号是无效的,那么永远也不会断到那里。但是钩子里并不知道它是无效的,call事件仍然会以为函数有断点从而启动line事件,造成CPU的浪费。
所以本篇,我们将对断点的行号进行检查,对于不在函数范围内的行号直接添加断点失败;在函数范围内的行号则自动修正为下一个有效的行号;另外支持不指定行号,默认为函数的第一个有效行。
源码已经上传Github,欢迎watch/star
请发表评论