欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Lua內(nèi)置的調(diào)試器用法詳解

 更新時間:2015年05月29日 11:18:53   投稿:goldensun  
這篇文章主要介紹了Lua內(nèi)置的調(diào)試器用法,在編程debug操作中非常有用,要的朋友可以參考下

 Lua提供了一個調(diào)試庫,它提供了所有的基本功能,創(chuàng)造自己的調(diào)試器。即便如此,也沒有內(nèi)置的Lua調(diào)試器,Lua為開發(fā)者創(chuàng)建很多調(diào)試器是開源。

調(diào)試Lua庫中可用的功能列于下表連同它的用途。

2015529111731688.jpg (628×608)

2015529111809205.jpg (633×576)

 上面列表中的Lua調(diào)試功能的完整列表,我們經(jīng)常使用,使用上述功能,并提供了更方便的調(diào)試庫。使用這些函數(shù)和創(chuàng)建自己的調(diào)試器是相當(dāng)復(fù)雜,不是最好的選擇的。無論如何,我們將看到使用簡單的調(diào)試功能的例子。

復(fù)制代碼 代碼如下:
function myfunction ()
print(debug.traceback("Stack trace"))
print(debug.getinfo(1))
print("Stack trace end")
 return 10
end
myfunction ()
print(debug.getinfo(1))

當(dāng)我們運(yùn)行上面的程序,會得到堆棧跟蹤信息,如下圖所示。

復(fù)制代碼 代碼如下:
Stack trace
stack traceback:
 test2.lua:2: in function 'myfunction'
 test2.lua:8: in main chunk
 [C]: ?
table: 0054C6C8
Stack trace end

在上面的示例程序中,堆棧跟蹤是通過使用調(diào)試庫中可用debug.trace功能打印。debug.getinfo得到函數(shù)的當(dāng)前表。
另外一個例子

我們經(jīng)常會需要知道一個函數(shù)的局部變量而進(jìn)行調(diào)試。為此可以使用setupvalue設(shè)置并使用getupvalue獲取這些局部變量、。一個簡單的例子對本如下所示。

復(fù)制代碼 代碼如下:
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())

當(dāng)我們運(yùn)行上面的程序,會得到下面的輸出。

復(fù)制代碼 代碼如下:
1
2
index 1 k = 1
index 2 n = 2
11

在這個例子中,每次計數(shù)器更新當(dāng)它被調(diào)用。可以使用getupvalue函數(shù)獲取局部變量的當(dāng)前狀態(tài)。然后將局部變量的設(shè)置新值。這里,n設(shè)定為2在操作被調(diào)用之前。使用setupvalue函數(shù)更新為10,當(dāng)調(diào)用計數(shù)器功能,它會返回11,而不是3。
調(diào)試類型

  •     命令行調(diào)試
  •     圖形化調(diào)試

命令行調(diào)試

命令行調(diào)試是使用命令行用命令和打印報表進(jìn)行調(diào)試的調(diào)試類型。有這幾個下面列出許多Lua可用的命令行調(diào)試器。

  •     RemDebug: RemDebug是一個遠(yuǎn)程調(diào)試器在Lua5.0和5.1。它可以遠(yuǎn)程控制另一個Lua程序執(zhí)行,設(shè)置斷點和檢查程序的當(dāng)前狀態(tài)。 RemDebug也可以調(diào)試CGILua腳本。
  •     clidebugger: lua5.1的一個簡單命令行界面調(diào)試程序用純Lua編寫。它不依賴于任何其他比標(biāo)準(zhǔn)的Lua5.1庫。它是從RemDebug啟發(fā),但不具有其遠(yuǎn)端設(shè)備。
  •     ctrace:  一種工具,跟蹤Lua的API調(diào)用。
  •     xdbLua: Windows平臺的一個簡單Lua命令行調(diào)試器。
  •     LuaInterface - Debugger: 本項目為擴(kuò)展LuaInterface調(diào)試器。它提出了建立在Lua調(diào)試接口到一個更高的水平。與調(diào)試器的交互是通過事件和方法調(diào)用完成。
  •     Rldb: 這是通過套接字的遠(yuǎn)程LUA調(diào)試器,適用于Windows和Linux。它可以給你比任何現(xiàn)有的更多的功能。
  •     ModDebug: 這使得可以遠(yuǎn)程控制其它Lua程序的執(zhí)行,設(shè)置斷點,并檢查程序的當(dāng)前狀態(tài)。

圖形化調(diào)試

圖形化調(diào)試提供有IDE提供了各種狀態(tài),如變量值,堆棧跟蹤信息和其他相關(guān)信息的可視化調(diào)試。有一種視覺表示,一步執(zhí)行了斷點的幫助下步控制,步入,跳過和其他按鈕在IDE中。

有圖形化Lua調(diào)試器的數(shù)量,它包括以下內(nèi)容。

  •     SciTE: 默認(rèn)Windows IDE中的Lua提供了多種調(diào)試工具,如斷點,一步,一步進(jìn)入,跳過,查看變量等。
  •     Decoda: 這是一個支持圖形化調(diào)試器遠(yuǎn)程調(diào)試。
  •     ZeroBrane Studio: Lua的IDE集成了遠(yuǎn)程調(diào)試器,堆棧視圖,表視圖,遠(yuǎn)程控制臺,靜態(tài)分析器等。工程與LuaJIT,Love2d,Moai,和其他的Lua引擎。 在Windows,OSX和Linux并且開源。
  •     akdebugger: Lua的Eclipse插件-調(diào)試器和編輯器。
  •     luaedit: 此功能遠(yuǎn)程調(diào)試,本地調(diào)試,語法高亮,自動完成建議列表,參數(shù)命題引擎,推進(jìn)斷點管理(包括斷點空調(diào)系統(tǒng)和命中數(shù)),函數(shù)列表,全局變量和局部變量列表,查看,解決問題為導(dǎo)向的管理


相關(guān)文章

  • Lua實現(xiàn)__add方法重載示例

    Lua實現(xiàn)__add方法重載示例

    這篇文章主要介紹了Lua實現(xiàn)__add方法重載示例,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • Lua中的全局變量、非全局變量總結(jié)

    Lua中的全局變量、非全局變量總結(jié)

    這篇文章主要介紹了Lua中的全局變量、非全局變量總結(jié),全局變量可稱之為Lua環(huán)境變量,需要的朋友可以參考下
    2014-09-09
  • Lua中調(diào)用C++函數(shù)實例

    Lua中調(diào)用C++函數(shù)實例

    這篇文章主要介紹了Lua中調(diào)用C++函數(shù)實例,本文是Lua和C++通信系列文章的最后一篇,需要的朋友可以參考下
    2014-09-09
  • Lua基礎(chǔ)迭代器的使用實例

    Lua基礎(chǔ)迭代器的使用實例

    今天小編就為大家分享一篇關(guān)于Lua基礎(chǔ)迭代器的使用實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Lua中的控制結(jié)構(gòu)(流程控制)簡明總結(jié)

    Lua中的控制結(jié)構(gòu)(流程控制)簡明總結(jié)

    這篇文章主要介紹了Lua中的控制結(jié)構(gòu)(流程控制)簡明總結(jié),本文講解了IF、repeat、while、for、break、return等語句,需要的朋友可以參考下
    2014-10-10
  • Lua極簡入門指南(一):基礎(chǔ)知識篇

    Lua極簡入門指南(一):基礎(chǔ)知識篇

    這篇文章主要介紹了Lua極簡入門指南(一):基礎(chǔ)知識篇,本文羅列了Lua的基礎(chǔ)知識,如注釋、數(shù)據(jù)類型、table、循環(huán)控制結(jié)構(gòu)等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • Lua中的__index和__newindex實例

    Lua中的__index和__newindex實例

    這篇文章主要介紹了Lua中的__index和__newindex實例,本文講解了具有默認(rèn)值的table、記錄table的訪問、只讀的table等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • Lua教程(十九):C調(diào)用Lua

    Lua教程(十九):C調(diào)用Lua

    這篇文章主要介紹了Lua教程(十九):C調(diào)用Lua,本文講解了C調(diào)用Lua基礎(chǔ)知識、table操作、調(diào)用Lua函數(shù)等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Lua教程(一):在C++中嵌入Lua腳本

    Lua教程(一):在C++中嵌入Lua腳本

    這篇文章主要介紹了Lua教程(一):在C++中嵌入Lua腳本,本文在MAC環(huán)境中開發(fā),同時探討了IOS項目集成Lua、Android項目集成Lua等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • Lua中的動態(tài)鏈接實例

    Lua中的動態(tài)鏈接實例

    這篇文章主要介紹了Lua中的動態(tài)鏈接實例,動態(tài)鏈接是指在Lua中使用C編譯的動態(tài)庫,需要的朋友可以參考下
    2014-09-09

最新評論