前面說過,在我們的專案中使用的是luabind。
呼叫lua函式的介面是:call_function(m_lua, func_name, player);
如果func出錯了,lua會丟擲異常,c++程式捕捉到後程式可能會崩掉(就看有沒有對異常的丟擲做反映),所以光寫call_function這個函式的話是看不到錯誤資訊的,我們需要把異常捕捉出來。
try catch(luabind::error& e)
這樣我們就能從堆疊中獲取丟擲的異常,同時程式也不會因此而崩掉!
但是這樣顯示的異常可能還不夠完整,我們又是想知道出錯在哪個lua指令碼的哪行**上,這就需要使用lua_debug來呼叫資訊。
通過查閱luabind和lua的參考手冊(以後要養成這樣的習慣,不能全依賴於google)發現,在call_function的呼叫丟擲異常以後,這個function已經從stack中刪除,所以使用lua_getstack會失敗。luabind手冊中點明可以通過luabind::set_pcall_callback這個函式來自定義lua_pcall的錯誤處理函式。
因此:自定義錯誤處理函式:
int pcall_callback_err_fun(lua_state* l)
msg << " [" << err << "]";
lua_pushstring(l, msg.str().c_str());
return 1;
}繫結函式:
luabind::set_pcall_callback(pcall_callback_err_fun);
注意的是:lua_getstack(l,2, &debug)中引數level需要設定為2,關於這個還在研究中。。。
資料集的基本資訊(二)
基本的介紹一些分布指標,稀疏性,缺失值和相關性。分布指標 主要就是兩個指標 偏度和峰度 kurtosis 兩個函式計算得到 偏度 它用於衡量資料的偏倚程度,也就是資料的對稱程度。skewness insurance 4 5 當其值在 1,1 是認為沒有完全的偏移,絕對值大於1時,認為有顯著的偏移 小...
執行緒基本資訊
六 執行緒基本資訊 isalive 判斷執行緒是否還 活 著,即執行緒是否還未終止 getpriority 獲得執行緒的優先順序資料 setpriority 設定執行緒的優先順序資料 優先順序 概率,不是絕對的優先順序 max priority 10 noem priority 5 預設 min p...
dmesg 基本資訊
dmesg cn s 緩衝區大小 引數說明 c 顯示資訊後,清除ring buffer中的內容。s 緩衝區大小 預設定為8196,剛好等於ring buffer的大小。n 設定記錄資訊的層級。dmesg more dmesg less dmesg grep dmesg head 20 dmesg t...