2013-04-03 80 views
1

使用Rcpp編寫R擴展時,有可能在拋出異常時獲取更多信息? 例如在默認情況下,當某個索引超出界限,我得到:有關Rcpp異常的更多信息

Error in myfunction(V) : 
    index out of bounds 
Calls: source ... eval -> myfunction -> .Call -> cpp_exception 
Execution halted 

在這一點上我不知道在代碼中可能發生。用調試信息編譯代碼時是否可以打印堆棧? Rcpp異常可以這樣做嗎?

在段錯誤我想我可以嘗試使用deathhandler,但我也在尋找一個定期例外的解決方案。

回答

0

這很可能不是您的代碼/ Rcpp代碼。

如果你使用Rcpp作爲異常,你可以控制和恢復R級別的消息(假設你從std::exception等得到)。在那裏有很多例子,例如this SO post

但要捕捉這樣的「隨機」錯誤,您可能需要訴諸使用調試器。

+0

我很好,使用gdb,但我如何告訴它停止在Rcpp異常?我可以在Rcpp異常上放置一個斷點嗎?有沒有辦法註冊異常處理程序? – tlamadon

相關問題