使用Rcpp编写R扩展时,是否可以在抛出异常时获取更多信息? 例如,默认情况下,当索引超出范围时,我得到:
Error in myfunction(V) :
index out of bounds
Calls: source ... eval -> myfunction -> .Call -> cpp_exception
Execution halted
此时我不知道它可能在代码中发生了什么。使用调试信息编译代码时是否可以打印堆栈? Rcpp例外能做到吗?
在段错误中,我想我可以尝试使用deathhandler,但我也在寻找常规例外的解决方案。
答案 0 :(得分:0)
那个很可能不是来自你的代码/ Rcpp代码。
如果您使用Rcpp进行例外处理,则可以在R级别进行控制并恢复消息(假设您从std::exception
等派生出来)。那里有很多例子,例如this SO post
但要捕捉这样的“随机”错误,您可能需要使用调试器。