章老师好,
使用lj-lua-stacks过程中遇到2个可能的bug,回报下:
1. 如果loadstring了一个多行的代码,火焰图会不准,因为bt文件里面应该单行的堆栈会因为代码的换行影响,比如:
@./lib/stat/time.lua:141
@./lib/manual.lua:88
local matrix, rowdata = ...
local function add() end
local g = getfenv(1)
g.exdata = rowdata
return 0
:0
@./lib/stat/time.lua:49
第三行到第7行就是loadstring的function调用,其实是一个堆栈。
2. 第二个问题我不知道为什么,想请教下,就是bt文件里堆栈会被不明原因截断。
比如正常应该这样
@./lib/taskscheduled.lua:315
@lua/perform.lua:0
C:pmain
466
但只要顶层堆栈没调试符号,就会被截断,比如:
0xbcac715
@./lib/taskscheduled.lua:315
@lua/perf 64
我不知道是不是因为顶层堆栈调试符号的关系,我过几天会编译下顶层的代码尝试弄出调试符号,验证下。
我的环境是ubuntu14.02,由最新版openresty编译后附带的luajit 2.1二进制运行,没有用到nginx。
最后感谢章老师的火焰图工具,帮助很大。