ljstack是一个能够对luajit2.1进程进行profile的工具,同时也是一个库。
性能相当高,可以在线上开启,目标进程性能损失低于2%。
这个问题在CLion的帮助文档里有说明,为了避免ptrace失败,可以sudo执行进程,或者是执行如下命令:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
为了能够持久生效,建议修改配置,打开/etc/sysctl.d/10-ptrace.conf
,然后把kernel.yama.ptrace_scope
的值改成0。
保存后再执行:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
默认情况下,支持luajit的2.0以及2.1的32位版本。
如果要支持luajit的2.1的64位版本,需要在cmake生成makefile的时候,执行:
cmake .. -DLJ_GC64
默认情况下,luajit在编译的时候指定了参数,取出了部分符号,导致ljstack无法获取到符号以及对应的地址。
缺失符号表,会造成profile无法进行。
为了避免这个问题,有两种办法:
- 使用Debug模式编译luajit
- 修改MakeFile
修改MakeFile,需要在MakeFile中添加:
TARGET_STRIP= @:
如下图: