C調lua出錯,返回c層列印錯誤資訊

2021-07-23 01:15:12 字數 900 閱讀 7602

內容如題目

lua**如下:

file: test.lua

local c

c.a = 123

c**如下:

file: test.c

#include 

#include "lua.h"

#include "lauxlib.h"

#include "lualib.h"

static

int traceback( lua_state *l)

else

}int main(int argc, char ** argv)

//第四個引數表示將錯誤資訊msg傳入棧1所在的函式(錯誤處理函式)

r = lua_pcall(l,0,0,1);

if (r != lua_ok)

printf("call err\n%s\n", lua_tostring(l,-1));

else

printf("call succ\n");

return

0;}

complie:

gcc -o test test.c -llua

-ldl

-lm

run

./test
result:

call err

test.lua:2: attempt to index local

'c' (a nil value)

stack traceback:

test.lua:2: in main chunk

錯誤資訊包含檔案,出錯行號,錯誤原因,呼叫棧.

lua調c動態庫

lua 指令碼調c 動態庫函式時開始調不成功,通過 lua官方的 mail list 才知道 c動態庫里的註冊函式和 lua指令碼的開啟庫的方式要一致。1.c動態庫的 static int lua msgbox lua state l int declspec dllexport luaopen d...

C函式返回多個引數給lua

lua通過乙個執行時棧來維護引數傳遞及返回,使用lua to 等函式獲取lua傳遞到c函式的引數,使用lua push 從c函式返回值到lua指令碼。此外也可以使用lua getglobal從c函式獲取lua指令碼定義的全域性變數。include include include for functi...

Lua呼叫C 時列印堆疊資訊

公司的手遊專案,使用的是基於cocos2d x綁lua的解決方案 引數quick x的繫結 雖然使用了lua進行開發,更新很爽了,但是崩潰依然較為嚴重,從後台檢視崩潰日誌時,基本上只能靠 猜 來復現bug。更為鬱悶的是很多時候並沒有使用log輸出,在崩潰日誌裡還無法檢視大概在哪一步操作崩潰的 後來在...