【发布时间】:2015-09-04 05:34:37
【问题描述】:
我有以下问题(并且不能真正产生最小的测试)-- 我正在通过 Rcpp 将一个包从 C++ 移植到 R。 测试(我正在测试输出矩阵是否正是我 如果直接调用c++会得到)在linux和osx下绝对相等,没有区别。
但是当通过 build_win() 或 win 8.1 虚拟机进行测试时,我得到不同的结果(但两者之间的结果是一致的,所以我有 linux/osx vs win 结果) 我已经用相应的 Rcpp 糖替换了一个 rand() 调用,所以这应该没问题(至少我希望如此)。 由于通过“R -d valgrind”调用测试也不会产生错误,我有点困惑如何继续。 所有测试均使用 R 3.2.0(本地机器)和最新的不稳定版本(通过 build_win())完成 所以我的问题是:
- 编译时是否存在任何已知的 Rcpp 差异(例如,Windows 上 Rtools 提供的编译器太旧,因此数值计算(使用 STL,没有其他库,如 boost/eigen 等)预计会略有不同?
- 有没有调试问题的好方法?我基本上需要逐行跟踪 C++ 代码,我什至不知道如何做到这一点,除了沉重的 std::couts。
谢谢。
【问题讨论】:
-
我只是意识到 build_win() 的 i386/x64 结果是不同的,因此可能暗示代码中存在 32/64 位问题。会尝试谷歌,我可能做错了什么。
-
好吧,这是一个 32 位与 64 位的问题,因为 32 位的 ubuntu 15.04 确实产生了与我的 64 位的 ubuntu 15.04 不同的结果。
-
现在变得更加奇怪了:如果我直接通过命令行运行脚本 (R --vanilla 正确 结果。 valgrind 是否修复了一些 R 错误? ://
标签: linux windows macos cross-platform rcpp