发件人: Yichun Zhang (agentzh)<age...@gmail.com>
收件人: openresty<openresty@googlegroups.com>
发送时间: 2014年12月22日(周一) 15:22
主题: Re: [openresty] [ANN] New GDB tools for setting breakpoints onLuafunctions for LuaJIT v2.1
Hello!
On Sun, Dec 21, 2014 at 8:39 PM, wgm.china wrote:
> 我在使用luajit ffi调C的组件包,做了一个客户端小程序,总是在几个小时后出现程序异常退出core
> dump,能否通过nginx-gdb-utils来调试查找是哪一段代码出现问题吗?
>
调试与 FFI 相关的内存错误,最合适使用 valgrind 来进行诊断。当然,同时配合下面的设置,valgrind 的排查效果会好得多:
1. 编译 LuaJIT 时启用 C 编译器选项 -DLUA_USE_ASSERT -DLUAJIT_USE_VALGRIND
-DLUAJIT_USE_SYSMALLOC(如果使用的是 OpenResty 的话,可以直接在 ./configure 时指定命令行选项
--with-debug --with-luajit-xcflags='-DLUA_USE_ASSERT
-DLUAJIT_USE_VALGRIND -DLUAJIT_USE_SYSMALLOC' )
2. 在你的 Lua 程序的开头添加下面的 Lua 代码,以强制每一行语句之后都执行一次完整的 GC 周期:
debug.sethook(function () collectgarbage() end, 'l') jit.off()
Regards,
-agentzh
--