【问题标题】:How to debug an R package (with C and C++ code) in Eclipse?如何在 Eclipse 中调试 R 包(使用 C 和 C++ 代码)?
【发布时间】:2014-03-24 17:01:36
【问题描述】:

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

有什么方法可以在 Eclipse/StatET 中调试 R 包的 C/C++ 代码(例如this example of debugging external code linked to Scilab)?

【问题讨论】:

    标签: c++ eclipse r debugging statet


    【解决方案1】:

    以下步骤适用于 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 下安装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

    b. Project 可能指向 R-package 项目。

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

    1. 在“参数”标签下使用:

    --slave --vanilla --no-save

    1. 在“环境”标签下添加:

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

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

    1. 在“调试器”标签下

    一个。选择 GDB 调试器gdb

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

    1. 在“来源”标签下

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

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

    1. 单击调试。

    【讨论】:

    • 我认为没有必要用调试模式编译R。我们不会调试 R 本身
    • 好点。这会让事情变得更容易。这是第一步,当我无法获得“调试”符号时,我曾尝试过。我没有弄乱 PKG_CFLAGS 并且想使用 R 默认标志。以前,我无法覆盖 R CFLAGS。
    • R 包通常是开源的,无论你使用什么包都用调试符号编译它,然后用 gdb 检查它
    【解决方案2】:

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

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

    注意 1:你应该设置 eclipse 来编译一个 R 包。

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

    【讨论】:

    • 感谢您的回复。我无法让调试器运行。前面的步骤都很好。
    猜你喜欢
    • 2011-06-26
    • 2011-02-15
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 2011-03-31
    相关资源
    最近更新 更多