16

在 Visual Studio 中,我们可以使用“附加到进程”来调试 DLL。

有什么方法可以在 Eclipse/StatET 中调试 R 包的 C/C++ 代码(即类似于调试链接到 Scilab 的外部代码的示例)?

4

2 回答 2

8

以下步骤适用于 Eclipse-CDT C/C++ (LUNA)。

  1. 使用调试信息编译 R (3.2)。使用 SVN 下载源代码的步骤可以在 R 安装指南中找到。

$./configure --enable-R-shlib --with-valgrind-instrumentation=2 --with-system-valgrind-headers --CFLAGS='-g -O0 -fPIC' FFLAGS='-g -O0 -fPIC' CXXFLAGS='-g -O0 -fPIC' FCFLAGS='-g -O0 -fPIC' 
$make
$sudo make install 

这将在/usr/local/lib/R.

注意:需要 -g 和 -O 来添加调试符号并确保编译优化不会妨碍调试。

  1. 为带有 C 源代码的 R 包设置正确的目录结构。使用 makefile 而不是依赖 Eclipse-StatET 来构建项目。使设置更容易移植到 Windows。

  2. 在命令行或使用 Makefile 安装 R CMD 会将包安装到用户的本地 R 库。

  3. 在 Eclipse (Luna) 下,在 C/C++ 应用程序下创建一个“新调试配置”。

  4. 在“主要”选项卡下:

一个。选择一个 C/C++ 应用程序:

/usr/local/lib/R/bin/exec/R

湾。Project 可能指向 R-package 项目。

C。选中“将过程输入和输出连接到终端”。

  1. 在“参数”选项卡下使用:

--slave --vanilla --no-save

  1. 在“环境”选项卡下添加:

一个。LD_LIBRARY_PATH:/use/local/lib/R/lib

湾。R_HOME /usr/local/lib/R 选择“将环境附加到本机环境”

  1. 在“调试器”选项卡下

一个。选择 GDB 调试器gdb

湾。如果“GDB 命令集”未作为选项显示,请单击最底部的“选择其他...”。选择“旧版创建流程启动器”。这样做现在将显示用于选择 GDB 命令集的选项: Pick Standard with protocol mi

  1. 在“来源”选项卡下

一个。使用 R 源添加 R 目录的绝对路径(可选)~/Downloads/R

湾。将绝对路径添加到包 src 目录和任何其他依赖库。

  1. 单击调试。
于 2015-05-02T10:20:02.307 回答
1

您应该先运行 R。然后您应该运行该包并将其附加到 R 进程(调试配置 > C/C++ 附加到应用程序)。R 和 eclipse 都必须以 root 身份运行。

共享库必须是 ...dll 或 ...so 的地址,即 R 包库。

注意 1:您应该设置 eclipse 来编译 R 包。

http://blog.fellstat.com/?p=170

于 2015-05-02T08:53:24.510 回答