之前搞过一下systemtap(systemtap折腾笔记),可惜很快琐事缠身,没有继续搞下去.最近偷空搞了一下,有点意思. 章大大的思路,是用perl生成systemtap脚本,从/proc/$pid/maps里面扫出liblua.so的地址.然后hook这个地址里,以luaL_*和lua_*开头的lua虚拟机C函数.hook住的函数里,都会有个参数L,这个L表示lua的虚拟机.接下来就是按lua的C代码撸一遍,看看怎么从L的内存结构里,dump出整个lua的运行栈.相当于在systemtap…