Lua提供了一個調試庫,它提供了所有的基本功能,創造自己的調試器。即便如此,也沒有內置的Lua調試器,Lua為開發者創建很多調試器是開源。
調試Lua庫中可用的功能列于下表連同它的用途。
上面列表中的Lua調試功能的完整列表,我們經常使用,使用上述功能,并提供了更方便的調試庫。使用這些函數和創建自己的調試器是相當復雜,不是最好的選擇的。無論如何,我們將看到使用簡單的調試功能的例子。
當我們運行上面的程序,會得到堆棧跟蹤信息,如下圖所示。
在上面的示例程序中,堆棧跟蹤是通過使用調試庫中可用debug.trace功能打印。debug.getinfo得到函數的當前表。
另外一個例子
我們經常會需要知道一個函數的局部變量而進行調試。為此可以使用setupvalue設置并使用getupvalue獲取這些局部變量、。一個簡單的例子對本如下所示。
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())
當我們運行上面的程序,會得到下面的輸出。
在這個例子中,每次計數器更新當它被調用。可以使用getupvalue函數獲取局部變量的當前狀態。然后將局部變量的設置新值。這里,n設定為2在操作被調用之前。使用setupvalue函數更新為10,當調用計數器功能,它會返回11,而不是3。
調試類型
命令行調試
命令行調試是使用命令行用命令和打印報表進行調試的調試類型。有這幾個下面列出許多Lua可用的命令行調試器。
圖形化調試
圖形化調試提供有IDE提供了各種狀態,如變量值,堆棧跟蹤信息和其他相關信息的可視化調試。有一種視覺表示,一步執行了斷點的幫助下步控制,步入,跳過和其他按鈕在IDE中。
有圖形化Lua調試器的數量,它包括以下內容。
上一篇:淺析Lua編程中的異常處理
下一篇:簡單講解Lua中的垃圾回收機制