Lua depuración (depuración)
Lua ofrece la biblioteca de depuración para proporcionar a crear un convertidor funciona personalizado. Lua en sí no tiene un gobernador incorporado, pero muchos desarrolladores compartir su gobernador código Lua.
Lua en la biblioteca de depuración incluye las siguientes funciones:
No. | Método y Propósito |
---|---|
1. | debug (): Entrar en un modo interactivo con el usuario, se ejecuta cada cadena introducida por el usuario. El uso de comandos simples y otros valores de depuración, el usuario puede revisar las variables globales y locales, cambiar los valores de las variables para calcular una serie de expresiones, y así sucesivamente. |
2. | getfenv (objeto): Object variable de entorno. |
3. | gethook (rosca opcional): Las devoluciones representan tres sets ganchillo del hilo: la función actual de gancho, gancho de la máscara actual, y el recuento actual de gancho |
4. | getinfo ([hilo,] f [ , lo]): Información sobre la función devuelve una tabla. Puede proporcionar esta función, también puede utilizar una representación digital de la función f. función digital f representa que se ejecuta en la pila de llamadas del subproceso especificado correspondiente a los niveles: nivel 0 indica la función actual (getinfo sí mismo); 1 capa indica que la función de llamada getinfo (a menos que sea el final de la llamada, esta situación no está incluido en la pila); etc. . Si f es una función del número de actividades que el número más grande, getinfo devuelve nil. |
5. | debug.getlocal ([hilo,] f, local): Esta función devuelve el nombre y el valor del índice de la pila de capas función f para las variables locales locales. Esta función sólo se utiliza para acceder a las variables locales definidas de forma explícita, como los parámetros, variables temporales. |
6. | getmetatable (valor): Los índices puntos dados a los valores de elementos de tabla en la pila. Si el índice no es válido, o el valor del yuan hay una mesa, la función devuelve 0 y no empuja nada a la pila. |
7. | getregistry (): tabla de registro de nuevo, lo que está fuera de una tabla predefinida se puede utilizar para guardar cualquier código C que desea guardar el valor Lua. |
8. | getupvalue (f, a) Esta función devuelve los nombres y valores de la función f la primera en levantarse en valores. Si no lo hace en ese valor, devuelve cero. |
10. | sethook ([hilo,] gancho, máscara [, count]): Funcionará como un gancho configurado en. máscara de cuerda y el recuento digital determina el gancho será llamado cuando. La máscara es una combinación de los siguientes caracteres en una cadena, cada personaje tiene su propio significado:
|
11. | setlocal (nivel [hilo,], locales, valor): Esta función será el primer valor local asignado a la función de capa de nivel variable local de primera pila. Si usted no tiene esa variable, la función devuelve nil. Si el nivel transfronterizo, emitirá un error. |
12. | setmetatable (valor, tabla): El valor de la mesa de juego de mesa de elemento (puede ser nulo). Valor de retorno. |
13. | setupvalue (f, arriba, valor) : Esta función primera configurar un valor en el valor de la función f. Si usted no tiene esa función en un valor, devuelve nil de lo contrario, devuelve el nombre de los valores anteriores. |
14. | rastreo ([hilo,] [mensaje [nivel]]): Si usted tiene un mensaje, y no una cadena o nulo, la función sin ningún tratamiento directamente de nuevo mensaje. De lo contrario, se devuelve la información de rastreo posterior de pila pila de llamadas. cadena de mensaje opcional se añade al comienzo de la información de la pila de rastreo. Opciones digitales especificado nivel a partir del cual comenzó pila de capas vuelta hacia atrás (por defecto es 1, que llama en el rastreo de). |
La mesa es nuestra función de depuración común, entonces podemos ver algunos ejemplos sencillos:
function myfunction () print(debug.traceback("Stack trace")) print(debug.getinfo(1)) print("Stack trace end") return 10 end myfunction () print(debug.getinfo(1))
Ejecutar los resultados de la salida el código de seguridad:
Stack trace stack traceback: test2.lua:2: in function 'myfunction' test2.lua:8: in main chunk [C]: ? table: 0054C6C8 Stack trace end
En el ejemplo, se utiliza el rastreo y GetInfo funciones de la biblioteca de depuración, getinfo función devuelve una información de función de tabla.
Otro ejemplo
Con frecuencia tenemos que depurar las variables locales dentro de una función. Podemos utilizar la función getupvalue para establecer estas variables locales. Ejemplos son los siguientes:
function newCounter () local n = 0 local k = 0 return function () k = n n = n + 1 return n end end counter = newCounter () print(counter()) print(counter()) local i = 1 repeat name, val = debug.getupvalue(counter, i) if name then print ("index", i, name, "=", val) if(name == "n") then debug.setupvalue (counter,2,10) end i = i + 1 end -- if until not name print(counter())
Ejecutar los resultados de la salida el código de seguridad:
1 2 index 1 k = 1 index 2 n = 2 11
En el ejemplo anterior, el contador se incrementa cada vez que una llamada 1. Los ejemplos que utilizan la función getupvalue para ver el estado actual de las variables locales. Podemos establecer una variable local a un nuevo valor. Ejemplo, antes de n es 2, utilice la función setupvalue colocó a 10. Ahora llamamos a la función después de la ejecución de la salida es de 11 en lugar de 3.
Tipo de depuración
- depurador de línea de comandos
- depurador gráfico
De línea de comandos depurador tiene: RemDebug, clidebugger, ctrace, xdbLua, LuaInterface - Depurador, Rldb, ModDebug.
depurador interfaz gráfica tiene: SciTE, Decoda, ZeroBrane de estudio, akdebugger, LuaEdit.