程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Lua內置的調試器用法詳解

Lua內置的調試器用法詳解

編輯:更多關於編程

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

      Lua提供了一個調試庫,它提供了所有的基本功能,創造自己的調試器。即便如此,也沒有內置的Lua調試器,Lua為開發者創建很多調試器是開源。

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

    2015529111731688.jpg (628×608)
    2015529111809205.jpg (633×576)

      上面列表中的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: 此功能遠程調試,本地調試,語法高亮,自動完成建議列表,參數命題引擎,推進斷點管理(包括斷點空調系統和命中數),函數列表,全局變量和局部變量列表,查看,解決問題為導向的管理

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved