Lua內建的調試器用法詳解

來源:互聯網
上載者:User

   這篇文章主要介紹了Lua內建的調試器用法,在編程debug操作中非常有用,要的朋友可以參考下

  Lua提供了一個調試庫,它提供了所有的準系統,創造自己的調試器。即便如此,也沒有內建的Lua調試器,Lua為開發人員建立很多調試器是開源。

  調試Lua庫中可用的功能列於下表連同它的用途。

  上面列表中的Lua調試功能的完整列表,我們經常使用,使用上述功能,並提供了更方便的調試庫。使用這些函數和建立自己的調試器是相當複雜,不是最好的選擇的。無論如何,我們將看到使用簡單的調試功能的例子。

   代碼如下:

  function myfunction ()

  print(debug.traceback("Stack trace"))

  print(debug.getinfo(1))

  print("Stack trace end")

  return 10

  end

  myfunction ()

  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

  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())

  當我們運行上面的程式,會得到下面的輸出。

   代碼如下:

  1

  2

  index 1 k = 1

  index 2 n = 2

  11

  在這個例子中,每次計數器更新當它被調用。可以使用getupvalue函數擷取局部變數的目前狀態。然後將局部變數的設定新值。這裡,n設定為2在操作被調用之前。使用setupvalue函數更新為10,當調用計數器功能,它會返回11,而不是3。

  偵錯類型

  命令列調試

  圖形化調試

  命令列調試

  命令列調試是使用命令列用命令和列印報表進行調試的偵錯類型。有這幾個下面列出許多Lua可用的命令列調試器。

  RemDebug: RemDebug是一個遠端偵錯工具在Lua5.0和5.1。它可以遠端控制另一個Lua程式執行,設定斷點和檢查程式的目前狀態。 RemDebug也可以調試CGILua指令碼。

  clidebugger: lua5.1的一個簡單命令列介面偵錯工具用純Lua編寫。它不依賴於任何其他比標準的Lua5.1庫。它是從RemDebug啟發,但不具有其遠端裝置。

  ctrace: 一種工具,跟蹤Lua的API調用。

  xdbLua: Windows平台的一個簡單Lua命令列調試器。

  LuaInterface - Debugger: 本項目為擴充LuaInterface調試器。它提出了建立在Lua調試介面到一個更高的水平。與調試器的互動是通過事件和方法調用完成。

  Rldb: 這是通過通訊端的遠程LUA調試器,適用於Windows和Linux。它可以給你比任何現有的更多的功能。

  ModDebug: 這使得可以遠端控制其它Lua程式的執行,設定斷點,並檢查程式的目前狀態。

  圖形化調試

  圖形化調試提供有IDE提供了各種狀態,如變數值,堆疊追蹤資訊和其他相關資訊的可視化調試。有一種視覺表示,一步執行了斷點的協助下步控制,步入,跳過和其他按鈕在IDE中。

  有圖形化Lua調試器的數量,它包括以下內容。

  SciTE: 預設Windows IDE中的Lua提供了多種調試工具,如斷點,一步,一步進入,跳過,查看變數等。

  Decoda: 這是一個支援圖形化調試器遠端偵錯。

  ZeroBrane Studio: Lua的IDE整合了遠端偵錯工具,堆棧視圖,表視圖,遠端控制台,靜態分析器等。工程與LuaJIT,Love2d,Moai,和其他的Lua引擎。 在Windows,OSX和Linux並且開源。

  akdebugger: Lua的Eclipse外掛程式-調試器和編輯器。

  luaedit: 此功能遠端偵錯,本地調試,文法高亮,自動完成建議列表,參數命題引擎,推進斷點管理(包括斷點空調系統和命中數),函數列表,全域變數和局部變數列表,查看,解決問題為導向的管理

相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。