有没有办法在RCPP程序无法正常工作时阻止RGui崩溃?

Is there a way to stop RGui from crashing when an RCPP program fails to work correctly?

本文关键字:工作 RGui 崩溃 RCPP 程序 常工作 有没有      更新时间:2023-10-16

我正在使用 Rcpp 使用 RGui(版本 3.4.1(作为用户界面运行C++代码。很多时候,我对C++代码进行更改,这些代码可以正确编译,但是当我在RGui中运行相关程序时会导致错误(例如,在数组末尾之外进行搜索(,从而导致RGui崩溃。这很糟糕,因为我必须重新打开 RGui,重新打开我的 R 脚本(有时丢失未保存的更改(,再次设置工作目录等,然后才能重新编译C++代码并以查找问题或测试修正的方式运行程序。有时它会立即再次崩溃,因为我没有修复或绕过问题。

有没有办法改变 Rcpp 的运行方式,以便 RGui 在这种情况下返回错误消息而不是崩溃?

簡單地說:

  1. 它拼写为Rcpp.大写R,小写cpp。
  2. 是的,没有错误:)
  3. 一般来说,2.是唯一可行的答案。 如果需要托管语言,请使用 R。
  4. 如果代码导致环境关闭,请在环境外部进行测试。认真地。 例如,这就是为什么我(共同(编写了很少的内容并在命令行上测试"原始代码":它只能关闭命令行应用程序。
  5. 我们确实在例如 RcppArmadillo 中有一个功能来测试"越界"矢量访问:使用会发出警告x.at(i,j)。请参阅 http://arma.sourceforge.net/docs.html#element_access

除了更仔细的编程和执行前保存之外,我实际上不知道有什么方法可以防止这种情况。但是这样做了几次后,我发现了一种方法来恢复未保存的更改(至少在窗口中(。

当您看到告诉您重新启动 R 的弹出窗口时,您不会这样做。您打开任务管理器并右键单击该过程并选择"创建转储文件"。在资源管理器中找到此文件并使用一些文本编辑器打开它。

它们非常大,充满了各种各样的东西,但是如果你使用find函数来搜索一些你知道在你的脚本中的字符串,那么你可以找到所有未保存的工作。然后,您可以将其复制并粘贴到另一个文件中进行保存。

如果您使用 R-studio 而不是 R-GUI,它通常会更好地照顾您未保存的工作。