BabeLua常見問題
來源: http://blog.csdn.net/babestudio/article/details/27228865
怎樣升級BabeLua?
https://babelua.codeplex.com/releases 主站下載(國外站點,速度較慢,可下載最新源碼)
http://pan.baidu.com/s/1sjmC169 國內鏡像(國內較快)
下載BabeLua最新版本進行覆蓋安裝
如何查看當前安裝的BabeLua版本號?
通過VS菜單【工具】【擴展和更新】打開擴展和更新界面,找到並選中BabeLua插件,在右側顯示了當前安裝的BabeLua版本號。
啟動VS未能正確加載BabeLua
如果啟動VS出現這樣的提示,則需要到【擴展和更新】功能下卸載BabeLua,然后再重新安裝BabeLua即可解決問題。
BabeLua暫未實現功能有哪些?
●代碼塊自動完成(如輸入if后自動完成 then else end代碼塊)
●附加到進程調試
BabeLua不支持的功能有哪些?
●不支持遠程和真機調試
不能連接到IOS,Android,WP8真機進行調試。
BabeLua采用注入宿主程序方式進行調試,可以不用修改宿主程序代碼或Lua代碼就能調試。不同於使用socket通信進行調試的工具(如ZeroBrane),這些工具可以實現遠程和真機調試。
●不支持調試64位程序
您可以在編譯exe文件時將目標平台設置為X86(即32位),使用編譯出來的32位程序用來調試。
●不支持內存中的Lua代碼添加斷點
啟動調試后“輸出”窗口會顯示加載的Lua文件信息,如下圖:
其中tp,url,socket,@Untitled12文件均是內存中的Lua代碼,目前是不能添加斷點的。
main.lua,game.lua,config.lua是Lua文件,可以添加斷點。
自動補全功能與VC++/C#不太一致?
自動補全功能有兩種模式:“完成模式”和“建議模式”(VC++采用“建議模式”,C#默認采用“完成模式”)。
BabeLua采用的的是“完成模式”,自動補全規則如下:
●開始鍵入對象的名稱。在可滾動的列表中顯示所有的有效成員。鍵入時,相應的符號將突出顯示。您可以通過滾動或使用箭頭鍵瀏覽該列表,或者,如果知道成員名稱的前幾個字母,可以開始鍵入這些字母,直接跳至列表中的該成員。
●若要在代碼中插入突出顯示的成員,請按Tab或Enter。
●按Esc鍵,可以消除自動補全窗口。
怎樣使用“Lua for Windows”執行Lua代碼?
從Lua官網下載“Lua for Windows”並安裝,下載地址如下:
http://luaforge.net/projects/luaforwindows
安裝"Lua for Windows"可能需要預先安裝VC2005運行時庫,下載地址如下:
http://www.microsoft.com/en-us/download/details.aspx?id=3387
Lua scripts folder:Lua代碼的路徑,該目錄下的所有Lua文件將在“Folder Explorer”中列出。
Lua exe path:調試時啟動的exe文件路徑,設置為“Lua for Windows”安裝目錄下lua.exe文件的路徑。
Working path:工作目錄,與“Lua scripts folder”一致。
Commond line:運行的Lua文件名,下圖示例中運行的Lua文件名是func.lua。
啟動后如果“Lua.exe”窗口一閃而過,可以在Lua文件的最后面加上一行Lua代碼os.execute("PAUSE")
啟動調試后無法命中斷點是什么原因?
一、首先檢查一下您的“解決方案管理器”中是否包含多個項目,如果有多個項目,您需要右鍵點擊Lua項目,將其設置為啟動項目。
二、調試時無法命中斷點的問題,多數是因為BabeLua無法正確加載Lua文件所致,此時,BabeLua會在輸出窗口中輸出這個信息,如下圖:
到目前為止,BabeLua是從您設置的“Lua scripts folder”目錄下搜索Lua文件,然后加載Lua文件到VS調試器中。這不同於Lua虛擬機(LuaState),是有自己的Lua文件搜索規則(例如package.path)。
為了確保能正常的進行斷點調試,您目前需要遵循如下過程:
(1)將需要調試的Lua代碼,放到“Lua scripts folder”下,並確保目錄層級正確;
(2)在“Folder Explorer”中打開Lua文件並添加斷點;
三、啟動調試后,查看VS“輸出”窗口的輸出信息,如果出現以下提示信息:
Warning 1000: Lua functions were not found during debugging session
則需要將exe文件對應的pdb文件(和exe文件同時編譯出來的pdb文件)拷貝到exe文件所在目錄下,然后再啟動調試。
調試時觀察不到所有變量的值是什么原因?
如下圖,如果“監視”窗口中只顯示了變量的類型,而不顯示變量的值。請在“監視”窗口中點擊右鍵,去掉“十六進制顯示”的勾選項。
去掉“十六進制顯示”勾選項后,結果如下圖:
調試時觀察table類型的變量有時候看不見其成員?
極少數情況下會出現觀察table類型的變量看不見其成員。
出現的原因可能有該table下的成員有包含中文字符串或者是userdata(如cocos2d-x創建的對象)。
如果出現該現象,您又想查看table下的成員值,可以直接將table的成員拖到“監視”窗口中查看,或是鼠標移動到table的成員名稱上進行查看。
同時您可以提供相關的測試數據給我們,幫助我們改進。
調試時觀察cocos2d-x創建對象的值只能看到地址?
如下圖,調試查看visibleSize的值為0x08FF1CD0
需要查看該cocos2d-x對象的值你可以將該對象的成員拖到“監視”窗口中查看,或是鼠標移動到該對象的成員名稱上查看,如下圖:
或者通過調用cocos2d-x對象的函數,返回基礎類型的值(整形,字符串等)賦給變量來查看其內容,如下圖:
調試過程中宿主程序異常退出原因有哪些?
(1)宿主程序本身存在異常退出的現象
先檢查一下直接運行宿主程序,能否正常運行。
(2)使用了非Lua官網下載的Lua庫
使用非Lua官網下載的Lua庫,有可能會導致調試過程中宿主程序異常退出,向下兼容Lua5.1的庫可以正常調試。
(3)其他異常退出的現象
遇到其他異常退出的情況您可以加入BabeLua QQ群,尋求幫助。
BabeLua穩定性怎樣?
使用調試30-50次可能會出現1-2次crash的情況。
如果使用非Lua官網下載的Lua庫,向下兼容Lua5.1的庫可以正常調試。
==========================