Lua內建的偵錯程式用法詳解

2022-09-20 12:33:11 字數 1897 閱讀 7053

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也具有鍊錶的主要優點,即 ...