1

使用 Rcpp 编写 R 扩展时,是否可以在引发异常时获取更多信息?例如,默认情况下,当索引超出范围时,我得到:

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

在这一点上,我不知道它可能发生在代码的哪个位置。使用调试信息编译代码时是否可以打印堆栈?Rcpp 异常可以做到这一点吗?

在段错误上,我想我可以尝试使用deadhandler,但我也在寻找常规异常的解决方案。

4

1 回答 1

0

那很可能不是来自您的代码/ Rcpp 代码。

如果您使用 Rcpp 处理异常,您可以在 R 级别控制和恢复消息(前提是您从std::exceptionetc 派生)。那里有很多例子,例如这个 SO post

但是要捕获这样的“随机”错误,您可能需要使用调试器。

于 2013-04-03T22:10:39.407 回答