lua-mtrace

Introduction

This module allows tracing memory allocations.

Usage

The module returns a single function that takes a single file name as argument. When called, it replaces the Lua memory allocation function with one that logs what it does to the file. It returns a function that restores the original allocator.

undo = require "mtrace" "/tmp/mtrace.log"

Log format

Tho log file will contain output similar to that of mtrace(3):

    filename  op     address    size type
@ ./test.lua:1 + 0x557e2af32450 0x80 t
@ ./test.lua:1 + 0x557e2af32450 0x40 s
@ ./test.lua:2 < 0x557e2af32450
@ ./test.lua:2 > 0x557e2af32450 0x100
@ ./test.lua:3 - 0x557e2af32450

The main difference from what is produced by mtrace(3) is that allocations have an additional field describing the Lua type allocated.

Operations

+
New allocation
-
Freeing of memory
< and >
Allocation resize

Types

s
string
t
table
f
function / closure
u
userdata
c
coroutine / thread

Known issues