所设置的hook函数的性能为主要热点。
当纯lua写调试器时,此性能尤为重要。
hook函数中,必须的一个判定是不能调试调试器自身,这样,要判定源文件,那么就需要用debug.getinfo函数,而此函数开销很大(涉及内存分配)。
高效的做法是包装一个函数,获取指定stack level的文件名, 这样,文件名字符串总数是固定的,而lua中从c压入一个字符串到lua,查找哈希下即可, 要高效很多了。
至此,终于打包不用jit时,调试时不会因为hook函数导致运行卡(指等待断点)。
ps.用jit时,优化不优化都不是问题。。。 一点都不卡。