lua提供了乙個除錯庫,它提供了所有的基本功能,創造自己的偵錯程式。即便如此,也沒有內建的lua偵錯程式,lua為開發者建立很多偵錯程式是開源。
除錯lua庫中可用的功能列於下表連同它的用途。
上面列表中的lua除錯功能的完整列表,我們經常使用,使用上述功能,並提供了更方便的除錯庫。使用這些函式和建立自己的偵錯程式是相當複雜,不是最好的選擇的。無論如何,我們將看到使用簡單的除錯功能的例子。
複製** **如下:
function myfunction ()
print(debug.traceback("stack trace"))
print(debug.getinfo(1))
print("stack trace end")
return 10
endmyfunction ()
print(debug.getinfo(1))
當我們執行上面的程式,會得到堆疊跟蹤資訊,如下圖所示。
複製** **如下:
stack trace
stack traceback:
test2.lua:2: in function 'myfunction'
test2.lua:8: in main chunk
[c]: ?
table: 0054c6c8
stack trace end
在上面的示例程式中,堆疊跟蹤是通過使用除錯程式設計客棧庫中可用debug.trace功能列印。debug.getinfo得到函式的當前表。
另外乙個例子
我們經常會需要知道乙個函式的區域性變數而進行除錯。為此可以使用setupvalue設定並使用getupvalue獲取這些區域性變數、。乙個簡單的例子對本如下所示。
複製** **如下:
function newcounter ()
local n = 0
local k = 0
return function ()
k = n
n = n + 1
return n
&nbwww.cppcns.comsp; end
endcounter = 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)
endi = i + 1
end -- if
until not name
print(counter())
當我們執行上面的程式,會得到下面的輸出。
複製** **如下:12
index 1 k = 1
index 2 n = 2
11在這個例子中,每次計數器更新當它被呼叫。可以使用getupvalue函式獲取區域性變數的當前狀態。然後將區域性變數的設定新值。這裡,n設定為2在操作被呼叫之前。使用setupvalue函式更新為10,當呼叫計數器功能,它會返回11,而不是3。
除錯型別
命令列除錯
命令列除錯是使用命令列用命令和列印報表進行除錯的除錯型別。有這幾個下面列出許多lua可用的命令列偵錯程式。
圖形化除錯
圖形化除錯提供有ide提供了各種狀態,如變數值,堆疊跟蹤資訊和其他相關資訊的視覺化除錯。有一種視覺表示,一步執行了斷點的幫助下步控制,步入,跳過和其他按鈕在ide中。
有圖形化lua偵錯程式的數量,它包括以下內容。
本文標題: lua內建的偵錯程式用法詳解
本文位址:
Perl偵錯程式的用法
預設的perl偵錯程式就是perl直譯器本身,另外還有圖形介面的偵錯程式。因為我們 在開?br br 程式時一般都使用telnet訪問伺服器,所以這裡主要介紹一下預設的命 令行偵錯程式的用法。用 d 命令列選項啟動perl直譯器,例如 perl d test.pl 即進入perl偵錯程式的互動介面。...
GDB偵錯程式的用法
本文是我在學習linux gdb偵錯程式的時候所做的筆記,主要記錄在使用gdb的時候常用的命令,以便於以後的複習參考,不正確的地方忘高手指教 gdb是gnu開源組織發布的乙個強大的unix下的程式偵錯程式,gdb主要可幫助工程師完成下面4個方面的功能 在除錯核心金額除錯應用程式時使用gdb命令是完全...
list容器用法詳解(超好用的list) c
尊重原創 原創部落格鏈結 吐槽下部落格上 這篇部落格的人不標明出處.找原創找了好久嗚嗚嗚 1.關於list容器list是一種序列式容器。list容器完成的功能實際上和資料結構中的雙向鍊錶是極其相似的,list中的資料元素是通過鍊錶指標串連成邏輯意義上的線性表,也就是list也具有鍊錶的主要優點,即 ...