如何在Eclipse中调试带有C和C++代码的R包?

16
2个回答

8
以下步骤适用于Eclipse-CDT C/C++ (LUNA)。
  1. 使用SVN下载R(3.2)源代码并编译带调试信息的版本,具体步骤请参考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下安装R。

注意:需要使用-g和-O添加调试符号,并确保编译优化不会阻止调试。

  1. 为具有C源代码的R包设置适当的目录结构。使用Makefile而不是依赖于Eclipse-StatET构建项目,使设置更易于在Windows上移植。

  2. 在命令行或使用Makefile下运行R CMD install,将包安装到用户的本地R库中。

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

  4. 在“Main”选项卡下:

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

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

b. 项目可能指向R包项目。

c. 选中“连接进程输入和输出到终端”。

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

--slave --vanilla --no-save

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

a. LD_LIBRARY_PATH:/use/local/lib/R/lib

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

  1. 在“Debugger”选项卡下

a. 选择GDB调试器gdb

b. 如果“GDB命令集”未显示为选项,请单击底部的“选择其他...”。选择“Legacy Create Process Launcher”。这样将显示选择GDB命令集的选项:选择带有协议mi的标准版。

  1. 在“source”选项卡下

a. 添加R源目录的绝对路径(可选)~/Downloads/R

b. 添加包含包src目录和任何其他依赖库的绝对路径。

  1. 单击调试。

我认为没有必要使用调试模式编译R。我们不会调试R本身。 - user1436187
非常好的观点。这会让事情变得更容易。这是我尝试过的一个初始步骤,当我无法获取“调试”符号时。我没有改动PKG_CFLAGS并希望使用R默认标志。以前,我无法覆盖R CFLAGS。 - user151410
R包通常是开源的,无论您使用哪个包,都要将其编译为调试符号,并使用gdb进行检查。 - Jorch914

1
你应该先运行R,然后运行该软件包并将其附加到R进程中(调试配置> C / C ++附加到应用程序)。必须以root身份运行R和eclipse。
共享库必须是...dll或...so的地址,这是R软件包库。
注意1:您应该设置eclipse来编译R软件包。

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


感谢您的回复。我在运行调试器时遇到了问题,之前的步骤都没有问题。 - user151410

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接