Trazabilidad en Funciones de Lua

English version of this post.
Éste fin de semana he estado trabajando en algunos scripts de lua en los cuales estaba teniendo algunos problemas para visualizar el flujo. Así que decidí escribir una pequeña función que imprime la función actual en la que el se encuentra el flujo de código así como los valores de los parámetros pasados a esta función.

A mí me ha sido de ayuda por lo que aquí la dejo por si le sirve a alguien más. La primer función recibe el nombre de la función que hizo la llamada y una lista de parámetros los cuales concatena en una cadena amigable. La segunda función es un ejemplo de como imprimir información de la función en la que estamos.

local function debug_print_trac(func, ...)
    local res = func .. "( ";
    for i,v in ipairs(arg) do
        res = res .. tostring(v) .. " ";
    end
    res = res .. " )";
    debug_print(res);
end
 
local function set_monitor(monitor)
    debug_print_trac(debug.getinfo(1, "n").name, monitor);
    if (monitor == "principal") then
        set_window_position(0,0);
    else
        set_window_position(2561,0);
    end
end

A continuación se muestran unos resultados del debugging donde se puede apreciar las funciones por las que ha pasado el flujo y los valores de los parámetros.

set_top( false  )
Window Name: The Linux Programming Interface
Application name: Document Viewer
max_in( principal 4 false  )
set_monitor( principal  )

¡Saludos!
-Yohan

Leave a Reply

Your email address will not be published. Required fields are marked *