LuaMemorySnapshotDump icon indicating copy to clipboard operation
LuaMemorySnapshotDump copied to clipboard

对比时报错(3) [globbing] error: bad range specification after pos 61

Open powerdesigner opened this issue 7 years ago • 8 comments

为查内存泄漏,我在一个使用OpenResty的项目中应用了您的开源组件,不过在对比两个生成的文件时报错,提示如下 (3) [globbing] error: bad range specification after pos 61 有什么方法可以找出原因吗,或者正确的两个文件名写法是什么? LuaMemRefInfos.zip

powerdesigner avatar Mar 14 '18 06:03 powerdesigner

谢谢你的反馈,我会用你的数据查找下问题

yaukeywang avatar Mar 14 '18 15:03 yaukeywang

Hi,你好,我分别测试了,Lua5.1, Lua5.3, LuaJit2.0.3, LuaJit2.0.4, LuaJit2.0.5, LuaJit2.1.0-beta1 均运行正常,成功生成对比文件,没有出现你说的错误,而且这个错误提示不是lua的啊,Lua 和 LuaJit 的源码中也没有任何这样的字符串。 ps: 我上网搜索了下你的这个错误 “[globbing] error: bad range specification after pos” 貌似是 curl 命令行参数不对的问题,你可以看看是不是 curl 部分出现了错误,是由于你使用该插件可能哪里不当引起的?

yaukeywang avatar Mar 14 '18 16:03 yaukeywang

另外贴一下示例代码,使用你的测试数据:

local mri = require("MemoryReferenceInfo")
mri.m_cMethods.DumpMemorySnapshotComparedFile("./", "Compared", -1, "./LuaMemRefInfo-All-[20180314-003014].txt", "./LuaMemRefInfo-All-[20180314-055631].txt")

yaukeywang avatar Mar 14 '18 16:03 yaukeywang

Hi,我知道可能是什么问题了,可能是文件名的中括号 “[]” 引起的,这个中括号在 OpenResty 中被当成正则表达式的匹配符了,你尝试去掉文件名的中括号,或者在使用 local mri = require("MemoryReferenceInfo") 的文件中,在下面加入以下几句

mri.m_cConfig.m_bAllMemoryRefFileAddTime = false
mri.m_cConfig.m_bSingleMemoryRefFileAddTime = false
mri.m_cConfig.m_bComparedMemoryRefFileAddTime = false

作用是生成文件时不添加当前的时间戳(默认时间戳都是放在了中括号中),如果文件名有其他正则表达式的通配符,请都去掉试试,我觉得很可能是这个问题。

yaukeywang avatar Mar 14 '18 16:03 yaukeywang

暂时在忙其他的项目,抽时间我验证下。生成时包含时间戳很有必要,这样我可以定时/多次采样生成一组文件。对比时自己传入两个样本的文件名,那么这个bComparedMemoryRefFileAddTime 设置为false还是很有意义的,谢谢您的指导

powerdesigner avatar Mar 20 '18 06:03 powerdesigner

如果你想保留时间戳,你将源码稍微改一下,默认生成的时间使用了中括号"[]"将时间括起来了,你换成别的或者直接去掉中括号吧,可能引起正则表达式解析的问题了。具体直接在源码里搜索下中括号就好了,如果后面你有时间验证了请反馈下验证结果吧

yaukeywang avatar Mar 20 '18 09:03 yaukeywang

我在tolua 空项目中能正常测试, 但是放到项目中,运行就卡住,要等很久,是内存递归检测太耗时了?有没有办法优化一下

csdjk avatar Nov 10 '20 02:11 csdjk

我在tolua 空项目中能正常测试, 但是放到项目中,运行就卡住,要等很久,是内存递归检测太耗时了?有没有办法优化一下

你打印下LuaGC看看当前虚拟机多大,按照之前使用,100-200M左右,一般是不会出现卡死,Dump很快。

yaukeywang avatar Nov 11 '20 01:11 yaukeywang